我正在使用subprocess.call
来执行另一个python文件。考虑到将要调用的脚本将永远不会终止执行,因为它处于无限循环内,我如何才能使原始脚本在子流程调用之后继续执行?
示例:
我有script1.py,它会进行一些计算,然后使用subprocess.call(["python", "script2.py"])
来调用script2.py,因为它在无限循环内,script1被执行卡住了,除了使用子进程模块之外,还有另一种方法来运行文件吗? / p>
答案 0 :(得分:1)
subprocess.call(["python", "script2.py"])
等待子过程完成。
仅使用Popen
:
proc = subprocess.Popen(["python", "script2.py"])
您以后可以执行proc.poll()
来查看它是否完成,或者proc.wait()
来等待它完成(就像call
一样),或者只是忘记做它代替其他东西。
顺便说一句,您可能希望确保使用sys.executable
而不是python
来调用相同的"python"
,并且操作系统可以找到它:
subprocess.Popen([sys.executable, "script2.py"])