Python 并行运行多个进程,每次完成后继续

Python 并行运行多个进程,每次完成后继续,python,subprocess,Python,Subprocess,我在Windows环境中,假设我有两个玩具程序,分别称为2.bat和5.bat,它们看起来像timeout 2和timeout 5 我想设置一个同时运行2.bat和5.bat的脚本,当2.bat完成时,它会再次运行,同样地,对于5.bat。我对Python很在行,但经过一点搜索,我发现我可以做到: from subprocess import Popen commands = ["2.bat", "5.bat"] while True: proc

我在Windows环境中,假设我有两个玩具程序,分别称为
2.bat
5.bat
,它们看起来像
timeout 2
timeout 5

我想设置一个同时运行
2.bat
5.bat
的脚本,当
2.bat
完成时,它会再次运行,同样地,对于
5.bat
。我对Python很在行,但经过一点搜索,我发现我可以做到:

from subprocess import Popen

commands = ["2.bat", "5.bat"]
while True:
    procs = [Popen(i) for i in commands]  
    for p in procs:
       p.wait()
这并不是我想要的:它等待两个进程完成,然后再次执行这两个进程。我想做的(伪代码)如下:

while True:
    in parallel, run 2.bat and 5.bat
    when 2.bat finishes, rerun 2.bat again
    when 5.bat finishes, rerun 5.bat again
我可以通过
子流程实现这一点,还是需要其他库?

我的解决方案是:

从_线程导入开始_新线程
从子流程导入Popen
命令=[“2.bat”、“5.bat”]
def run_bat(文件):
尽管如此:
p=Popen(文件)
p、 等等
对于命令中的命令:
启动新线程(运行bat,(命令,))
尽管如此:
通过

你可以使用内置的
\u-thread
有一个简单的函数
start\u-new\u-thread()
从\u-thread导入start\u-new\u-thread
@DanTony这有点奇怪,但我更新了我的答案,显然如果实际的程序不运行,就不可能启动线程(我猜是因为它会完成并杀死所有相关的线程)@DanTony实际上可能有一个更好的线程库
threading
只是我知道这一个,所以这就是我使用的