【问题标题】:Using subprocess.call to execute python file?使用 subprocess.call 执行 python 文件?
【发布时间】:2019-03-18 21:04:28
【问题描述】:

我使用subprocess.call 来执行另一个python 文件。考虑到将被调用的脚本永远不会终止执行,因为它处于无限循环中,我怎样才能使原始脚本在子进程调用后继续执行?

示例: 我有 script1.py,它进行一些计算,然后使用subprocess.call(["python", "script2.py"]) 调用 script2.py,因为它在无限循环中,script1 在执行时卡住了,除了使用子进程模块之外,还有其他方法可以运行文件吗?

【问题讨论】:

  • 你能把回复推到未来或第二个线程或类似的东西上然后忘记它吗?
  • 没有必要为此使用subprocess。有script1.py import script2 并调用它的main函数。

标签: python python-3.x python-2.7 subprocess


【解决方案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"])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    相关资源
    最近更新 更多