Python os.system启动mode2进程后程序停滞,如何让后续代码执行?
解决Python调用mode2后停滞的问题
方法一:在shell命令后添加&实现后台运行
os.system()会阻塞当前Python进程,直到调用的shell命令执行完毕。由于mode2是持续运行的进程,这就导致Python脚本卡在这一步。只需在命令末尾添加&,让mode2在shell后台运行,shell会立即返回,Python就能继续执行后续代码:
import os os.system("mode2 &") # 此处可编写后续需要执行的代码
如果不想让mode2的输出干扰Python脚本的控制台输出,可以将输出重定向到/dev/null:
os.system("mode2 > /dev/null 2>&1 &")
方法二:使用subprocess.Popen(推荐方案)
os.system是较老旧的API,Python官方更推荐使用subprocess模块,它提供了更灵活的进程控制能力,且默认不会阻塞当前进程:
import subprocess # 启动mode2进程,不阻塞后续代码执行 mode2_process = subprocess.Popen(["mode2"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) # 后续代码可正常运行 # 若需要终止mode2进程,可调用 mode2_process.terminate()
这种方式还能方便地捕获mode2的输出,或者在需要时主动终止该进程,相比os.system可控性更强。
内容的提问来源于stack exchange,提问作者Carter ash
相关产品推荐
相关产品推荐

