Python, подпроцесс в нескольких потоках исчезают

#python #multithreading #subprocess

#python #многопоточность #подпроцесс

Вопрос:

У меня есть скрипт, который запускает потоки, которые запускаются subprocess.Popen . Этот скрипт отслеживает все выходные данные подпроцесса и выполняет действия, зависящие от выходных данных sobprocesses. Но иногда скрипт закрывает потоки. Вот пример моего скрипта:

 import threading
import subprocess
import os

def doAction(): # Main actions which every thread do.
    command = "MyCommandForSubprocess"
    p = subprocess.Popen(command, 
                         stdout=subprocess.PIPE, 
                         stderr=subprocess.STDOUT, 
                         shell=True, 
                         preexec_fn=os.setsid)
    command_output = iter(p.stdout.readline, b'')

    while True: # Linstening of subprocess output.
        for line in command_output:
            if "(i)" in line:
                OutputMessages("Good News")
                parameter  = 1
            if "(done)" in line:
                os.killpg(os.getpgid(p.pid), signal.SIGTERM)
        break

    processesTested  = 1
    OutputMessages("done")

def main()
    threadsLimited = raw_input("How many threads? ")
    threadsLimited = int(threadsLimited)

    actions = ["Thread(target=doAction, args=(parameter,))", "..."]

    for action in actions:
        # Limiter to chose how many threads to start simuntaneously.
        while True:
            if(int(activeCount()) <= threadsLimited):
                action.start()
                break
            else:
                time.sleep(.1)
                continue

    for thread in checkThreads:
        thread.join()
        activeCount()
  

Когда он запускает все процессы, я могу найти все python процессы на системном мониторе. Но через несколько минут python процессы закрылись, но sh процессы все еще активны с n/a использованием памяти. Почему процессы исчезают?