我正在使用subprocess.call
来执行另一个python文件。考虑到将被调用的脚本永远不会终止执行,因为它在无限循环内,我怎样才能使原始脚本在子进程调用后继续执行?
示例:我有script1.py进行一些计算,然后使用subprocess.call(["python", "script2.py"])
调用script2.py,因为它在一个无限循环内,script1在执行时卡住了,除了使用子进程模块之外还有另一种运行文件的方法吗?
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"])