我在Windows上使用Python 3.4.2。在script1.py中我这样做:
myProc = subprocess.Popen([sys.executable, "script2.py", "argument"])
myProc.communicate()
它可以工作并调用script2.py。 问题是在script2.py中有一个无限循环(必须有)并且script1.py正在等待script2.py完成。如何告诉script1.py只调用script2.py并且不要等待该过程完成?
答案 0 :(得分:4)
如果您不想等,请不要致电myProc.communicate()
。 subprocess.Popen
将启动此过程。
答案 1 :(得分:0)
在另一个窗口中调用脚本。
myProc = subprocess.Popen(["start", sys.executable, "script2.py", "argument"])
myProc.communicate()
start
是一个单独运行程序的Windows shell函数,允许当前程序继续其进程。我没有对此进行测试,因为我无法访问Windows操作系统,但Linux等效项(nohup
)可以根据需要运行。
如果您需要对script2.py的操作进行精确控制,请参阅multiprocessing
模块here。