Python subprocess.call阻塞

我正在尝试使用subprocess.call在Python中运行外部应用程序。 从我读过的内容来看,subprocess.call不应该被阻塞,除非你调用Popen.wait,但是对于我来说它会阻塞,直到外部应用程序退出。 我该如何解决?


subprocess的代码实际上非常简单易读。 只要看看3.3或2.7版本(如适用),你就可以知道它在做什么。

例如, call如下所示:

def call(*popenargs, timeout=None, **kwargs):
    """Run command with arguments.  Wait for command to complete or
    timeout, then return the returncode attribute.

    The arguments are the same as for the Popen constructor.  Example:

    retcode = call(["ls", "-l"])
    """
    with Popen(*popenargs, **kwargs) as p:
        try:
            return p.wait(timeout=timeout)
        except:
            p.kill()
            p.wait()
            raise

您可以在不呼叫wait的情况下做同样的事情。 创建一个Popen ,不要wait它,而这正是你想要的。


您正在阅读错误的文档。 根据他们:

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

运行args描述的命令。 等待命令完成,然后返回returncode属性。

链接地址: http://www.djcxy.com/p/68415.html

上一篇: Python subprocess.call blocking

下一篇: Ember bound block helper