You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:多Python脚本无法同时运行,subprocess仅执行首个脚本

解决多Python脚本同时运行的问题

嘿,我懂你的困扰——你现在用subprocess.call()和os.system()的时候,它们都是阻塞式的调用,会死死等着fileA.py完全跑完才会去启动fileB.py,自然没法同时运行多个脚本。要实现并行启动,你得用非阻塞的方式来启动子进程,subprocess.Popen()就是专门干这个的!

改进后的代码示例

import subprocess
@bot.event
async def on_ready():
    # 用Popen启动fileA,不会阻塞主进程的执行
    subprocess.Popen(['python', 'fileA.py'])
    # 紧接着就能启动fileB,两个脚本会同时运行起来
    subprocess.Popen(['python', 'fileB.py'])

额外实用提示

  • 如果之后需要管理这些子进程(比如查看运行状态、手动终止),可以把Popen的实例存下来:
    # 保存进程实例
    proc_a = subprocess.Popen(['python', 'fileA.py'])
    proc_b = subprocess.Popen(['python', 'fileB.py'])
    
    # 检查进程是否还在运行(返回True表示正在运行)
    print(proc_a.poll() is None)
    
    # 手动终止进程
    proc_a.terminate()
    
  • 如果需要捕获脚本的输出日志,或者处理输入输出,可以在Popen里指定stdout、stderr参数,比如subprocess.Popen(['python', 'fileA.py'], stdout=subprocess.PIPE, stderr=subprocess.PIPE),不过如果只是单纯要并行运行,这部分可以暂时不用管。

内容的提问来源于stack exchange,提问作者Raebel Christo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:38:15