首页 > 解决方案 > 使用 subprocess.call 执行 python 文件?

问题描述

我正在使用subprocess.call以执行另一个 python 文件。考虑到将被调用的脚本将永远不会终止执行,因为它在无限循环中,我怎样才能使原始脚本在子进程调用之后继续执行?

示例:我有 script1.py 进行一些计算,然后调用 script2.py using subprocess.call(["python", "script2.py"]),因为它在无限循环中,所以 script1 在执行时卡住了,除了使用 subprocess 模块之外,还有其他方法可以运行文件吗?

标签: pythonpython-3.xpython-2.7subprocess

解决方案


subprocess.call(["python", "script2.py"])等待子进程完成。

只需使用Popen

proc = subprocess.Popen(["python", "script2.py"])

您可以稍后proc.poll()查看它是否完成,或者proc.wait()等待它完成(就像call这样),或者只是忘记它并做其他事情。

顺便说一句,您可能希望通过使用而不是 just来确保python调用相同的内容,并且操作系统可以找到它:sys.executable"python"

subprocess.Popen([sys.executable, "script2.py"])

推荐阅读