#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
использованием памяти. Почему процессы исчезают?