使用subprocess.call来执行python文件?

问题描述 投票:0回答:1

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

示例:我有script1.py进行一些计算,然后使用subprocess.call(["python", "script2.py"])调用script2.py,因为它在一个无限循环内,script1在执行时卡住了,除了使用子进程模块之外还有另一种运行文件的方法吗?

python python-3.x python-2.7 subprocess
1个回答
1
投票

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

只需使用Popen代替:

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

您可以稍后执行proc.poll()以查看它是否已完成,或者proc.wait()等待它完成(如call所做的那样),或者只是忘记它并做其他事情。

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

subprocess.Popen([sys.executable, "script2.py"])
© www.soinside.com 2019 - 2024. All rights reserved.