我正在使用以下命令启动子进程:
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用时杀死:
p.terminate()
Run Code Online (Sandbox Code Playgroud)
要么
p.kill()
Run Code Online (Sandbox Code Playgroud)
该命令在后台继续运行,所以我想知道如何实际终止该进程.
请注意,当我运行命令时:
p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
它在发出时会成功终止p.terminate().
我有一个创建两个或更多子流程的主流程,我希望主流程等到所有子流程完成其操作并退出?
# main_script.py
p1 = subprocess.Popen(['python script1.py'])
p2 = subprocess.Popen(['python script2.py'])
...
#wait main process until both p1, p2 finish
...
Run Code Online (Sandbox Code Playgroud)