求助:多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
相关产品推荐
相关产品推荐

