Запуск следующего сценария демонстрирует это поведение. < /p>
Код: Выделить всё
import subprocess
p = subprocess.Popen(['sleep', '400'], stdout=subprocess.PIPE, shell=False)
< /code>
или < /p>
p = subprocess.Popen('sleep 400', stdout=subprocess.PIPE, shell=True)
< /code>
создаст подпроцесс. < /p>
p.terminate()
p.kill()
< /code>
ничего не делает с процессом. Продемонстрировано PS Aux | Grep Sleep < /code> < /p>
$ ps aux| grep 'sleep'
User 8062 0.0 0.0 7292 764 pts/7 S 14:53 0:00 sleep 400
< /code>
Процесс не был убит /не сделан несуществующим. Использование функции subprocess.call ()
subprocess.call(['kill', str(p.pid)])
< /code>
Это убьет процесс, но теперь он не существует. < /p>
$ ps aux | grep 'sleep'
User 8062 0.0 0.0 0 0 pts/7 Z+ 14:51 0:00 [sleep]
< /code>
Если очередь работает достаточно долго, в конечном итоге он достигнет максимального количества процессов, или в конечном итоге он пожмет невнимательные процессы и будет в порядке? < /p>
Если ответ является первым, как я могу справиться с несуществующими процессами в Python, не убивая родительский процесс? < /p>
Есть ли лучший способ убийства процессов? < /p>
Подробнее здесь: https://stackoverflow.com/questions/419 ... -in-python