Python subprocess.popen() without waiting

◇◆丶佛笑我妖孽 提交于 2020-01-02 08:22:30

问题


I'm using Python 3.4.2 on Windows. In script1.py I'm doing this:

myProc = subprocess.Popen([sys.executable, "script2.py", "argument"])
myProc.communicate()

it works and call script2.py . The problem is that in script2.py there is a infinite loop (there must be) and the script1.py is waiting for script2.py to finish. How can I tell to script1.py to just call script2.py and don't wait for the process to finish?


回答1:


Just don't call myProc.communicate() if you don't want to wait. subprocess.Popen will start the process.




回答2:


Call the script in another window.

myProc = subprocess.Popen(["start", sys.executable, "script2.py", "argument"])
myProc.communicate()

start is a windows shell function that runs a program separately, allowing the current one to continue its process. I haven't tested this as I've no access to a Windows OS, but The linux equivalent (nohup) works as required.

If you need fine control over what happens with script2.py, refer to the multiprocessing module here.



来源:https://stackoverflow.com/questions/28232503/python-subprocess-popen-without-waiting

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!