python结束子进程_如何清除python中的子进程

我们使用python进程来管理长时间运行的python子进程。有时需要终止子进程。kill命令不会完全终止进程,只会使其失效。

运行以下脚本将演示此行为。import subprocess

p = subprocess.Popen(['sleep', '400'], stdout=subprocess.PIPE, shell=False)

或者p = subprocess.Popen('sleep 400', stdout=subprocess.PIPE, shell=True)

将创建子流程。p.terminate()

p.kill()

对过程没有任何影响。由ps aux | grep sleep演示$ ps aux| grep 'sleep'

User 8062 0.0 0.0 7292 764 pts/7 S 14:53 0:00 sleep 400

该进程尚未终止。使用带'kill'和pid参数的subprocess.call()函数将发出kill命令。subprocess.call(['kill', str(p.pid)])

这会扼杀进程,但现在已经失效。$ ps aux | grep 'sleep'

User 8062 0.0 0.0 0 0 pts/7 Z+ 14:51 0:00 [sleep]

如果队列运行的时间足够长,它最终会达到最大进程数,还是最终会收获已失效的进程并恢复正常?

如果答案是前者,那么如何在不杀死父进程的情况下处理python中已失效的进程?

有没有更好的方法来杀死进程?

你可能感兴趣的:(python结束子进程)