Dro*_*gin 1 python windows parallel-processing cmd
我正在尝试在Windows 7(和10)中并行运行多个Python脚本。我正在从另一个Python脚本运行所有脚本,该脚本在脚本正在编辑的文件上执行更多功能。我希望外部脚本要等到其他脚本运行完毕。我已经尝试过了start /w,但是这使得每个脚本都在关闭控制台窗口之前等待。
本质上,我想做的是让Python等待3个进程完成。最后一个脚本只是一个print("done"),对我而言,这毫无意义。这对于我用3个进程来解决很重要,因为我需要对30个进程执行相同的操作。(在服务器上,有足够的可用线程。)
这是我要运行的CMD命令。
os.system("start python node1.py & start python node2.py & start python node3.py && start /w printstatement.py")
Run Code Online (Sandbox Code Playgroud)
有什么建议么?
使用subprocess.Popen代替os.system。您将获得3个Popen实例,可以等待。例如:
import subprocess
procs = [subprocess.Popen(['python', 'node{}.py'.format(n)])
for n in range(1, 4)]
retcodes = [p.wait() for p in procs]
Run Code Online (Sandbox Code Playgroud)
如果要使用单独的控制台窗口(如CMD start命令的工作方式),则将选项添加creationflags=subprocess.CREATE_NEW_CONSOLE到Popen调用中(仅Windows)。如果您想要不创建窗口的单独控制台,请使用creationflags=CREATE_NO_WINDOW(0x08000000)。在这种情况下,它们仍然具有控制台标准I / O。它只是不呈现到窗口。