Hvordan får du en liste over alle børn processer i python?

Jeg bruger en tredjeparts-bibliotek, der starter forskellige sub-processer. Når der er en undtagelse, jeg vil gerne dræbe alle børn processer. Hvordan kan jeg få en liste over barnet pid?

Måske kan hjælpe med at fortælle os dit STYRESYSTEM, da det er kommer til at være platform-afhængig
Gør POSIX hjælpe dig? Jeg antager, at nogle mennesker vil gerne vide, Windows svar også.
Se: stackoverflow.com/a/4229404/376587

OriginalForfatteren Rowan | 2010-07-01

3 svar

  1. 15

    Du kan ikke altid logge alle de sub-processer, som de er skabt, da de igen kan skabe nye processer, som du ikke er klar over. Men det er ret simpelt at bruge psutil at finde dem:

    import psutil
    
    current_process = psutil.Process()
    children = current_process.children(recursive=True)
    for child in children:
        print('Child pid is {}'.format(child.pid))
    Jeg mener, at parent og current_process er det samme?)
    Yup, som er redigeret for at korrigere. Tak @dyomas.

    OriginalForfatteren Jason Martens

  2. 2

    Det er normalt mere sikkert at logge pid af alle dine børn processer, når du opretter dem. Der er ikke en posix compliant måde at liste barn Pid ‘ er. Jeg ved, at dette kan gøres med PS værktøj.

    Ja, jeg forventede det. Problemet er, at det ikke er mig at skabe de processer, det er den tredje part bibliotek. Oh godt. Det er ikke en showstopper.
    kan jeg få en accept?
    Faktisk er dit svar det er ikke en løsning. Jeg har virkelig brug for at vide, hvordan jeg kan få psutil.Process til at give mig rekursiv memory_info og cpu_percent men min opfordring til underordnet proces til rent faktisk at åbne andre underordnet proces (mindst 4 eller 5 niveauer) jeg har ingen måde at holde styr på alle de Pid ‘ er.
    Dette giver os lidt flere informationer: stackoverflow.com/questions/3332043/…
    Natim, dit problem har intet at gøre med dette spørgsmål.

    OriginalForfatteren Zac Bowling

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *