我在 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
我可以使用 subprocess
实现这一点,还是需要其他库?
答案 0 :(得分:1)
我的解决方案是:
from _thread import start_new_thread
from subprocess import Popen
commands = ["2.bat", "5.bat"]
def run_bat(file):
while True:
p = Popen(file)
p.wait()
for command in commands:
start_new_thread(run_bat, (command, ))
while True:
pass