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

标签 python multithreading python-2.7 subprocess

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

当我尝试时,

os.system('a.exe')
#some code
os.system('b.exe')

只有在我杀死 a.exe 之后,b.exe 才开始运行? 为什么会这样? 如何同时运行两者? (我需要做多线程吗?) 注:我在Windows平台

最佳答案

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

#!/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()

参见 Python threading multiple bash subprocesses?

如果您想要在任何程序启动失败时停止之前启动的进程:

#!/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()

关于python - 在 Python 中与 os.system() 并行运行两个可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36942980/

相关文章:

python - 如何在瓷砖周围创建带有框架的 seaborn.heatmap()?

python - Pandas Dataframe-从20年的历史数据中删除一天中的某些时间

python - 解析 1000 年之前的日期

android - AsyncQueryHandler 与 IntentService?

php - 启用线程安全的服务器 php

python - UTF8-in 文字和 unicode 点之间有什么区别?

python - 是否可以在 python 中获取事件窗口的当前插入点(文本光标/插入符)?

java - thread.join() 的线程完成时间

shell - 从 .zshrc 导出 PYTHONPATH 不起作用

python - IntegrityError 在表 "orders_order"上插入或更新违反了外键约束“