【问题标题】:Python subprocess.popen() without waitingPython subprocess.popen() 无需等待
【发布时间】:2015-01-30 09:09:22
【问题描述】:

我在 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 而不要等待进程完成?

【问题讨论】:

  • 不相关:作为更灵活的选择,您可以将脚本作为 Python 模块导入(在其中使用 if __name__ =="__main__" 保护,以避免在导入时运行代码)并直接调用函数或使用 @ 987654324@、multiprocessingconcurrent.futures(如果需要)。

标签: python subprocess popen


【解决方案1】:

如果您不想等待,请不要致电myProc.communicate()subprocess.Popen 将启动进程。

【讨论】:

  • 我不敢相信..抱歉这个愚蠢的问题,感谢您的回复。
【解决方案2】:

在另一个窗口中调用脚本。

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

start是一个windows shell函数,它单独运行一个程序,允许当前的程序继续它的进程。我没有对此进行测试,因为我无法访问 Windows 操作系统,但 linux 等效项 (nohup) 可以按要求工作。

如果您需要更好地控制 script2.py 发生的情况,请参阅 multiprocessing 模块 here

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 2021-05-23
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 2017-12-23
    相关资源
    最近更新 更多