我使用一个脚本来运行两个脚本。像这样的代码:
import subprocess
subprocess.Popen("python a.py", shell=True)
subprocess.Popen("python b.py", shell=True)
但是如果我结束主脚本,则a.py和b.py的子进程仍在运行。如何解决?
已添加:
a.py和b.py是两个服务器脚本。当我使用ctrl + c结束主脚本时,两个服务器都没有结束。那么,当我结束主脚本时如何结束所有进程?
答案 0 :(得分:3)
通过终止进程。
import subprocess
p1 = subprocess.Popen("python a.py", shell=True)
p2 = subprocess.Popen("python b.py", shell=True)
# ... do things ...
p1.kill()
p2.kill()
您还可以使用atexit模块自动完成此操作:
import subprocess
import atexit
p1 = subprocess.Popen("python a.py", shell=True)
p2 = subprocess.Popen("python b.py", shell=True)
atexit.register(p1.kill) # register for killing
atexit.register(p2.kill)
# ... do things ...