在Python中与os.system()并行运行两个可执行文件?

ngu*_*b05 3 python multithreading subprocess python-2.7

我希望并行运行两个可执行文件 a.exe 和 b.exe,依次调用。

当我尝试时,

os.system('a.exe')
#some code
os.system('b.exe')
Run Code Online (Sandbox Code Playgroud)

b.exe 在我杀死 a.exe 后才开始启动?为什么会发生这种情况?我怎样才能同时运行两者?(需要多线程吗?) 注:我是Windows平台

jfs*_*jfs 5

如果我们忽略异常,那么同时运行多个程序就很简单:

#!/usr/bin/env python
import subprocess

# start all programs
processes = [subprocess.Popen(program) for program in ['a', 'b']]
# wait
for process in processes:
    process.wait()
Run Code Online (Sandbox Code Playgroud)

看到Python 线程化多个 bash 子进程了吗?

如果您想在任何程序无法启动时停止先前启动的进程:

#!/usr/bin/env python3
from contextlib import ExitStack
from subprocess import Popen


def kill(process):
    if process.poll() is None:  # still running
        process.kill()

with ExitStack() as stack:  # to clean up properly in case of exceptions
    processes = []
    for program in ['a', 'b']:
        processes.append(stack.enter_context(Popen(program)))  # start program
        stack.callback(kill, processes[-1])
    for process in processes:
        process.wait()
Run Code Online (Sandbox Code Playgroud)