Python __init__() 得到了一个意想不到的关键字参数'timeout'



我有以下代码,超时设置为60秒

p = subprocess.Popen(['ocamlopt', file], 
                     stdout=subprocess.PIPE, 
                     stderr=subprocess.PIPE, 
                     timeout=TIMEOUT_ECAML, 
                     )

我不明白为什么我得到

的错误信息
__init__() got an unexpected keyword argument 'timeout'

我已经研究了这个以前的帖子与相同的错误,但其他用户使用subprocess.call(),而我使用subprocess.Popen(),所以我很困惑为什么会发生这种情况。

Popen类在其签名中没有timeout参数:

https://docs.python.org/2/library/subprocess.html subprocess.Popen

您可以在实际通信时传递timeout参数:

https://docs.python.org/3/library/subprocess.html subprocess.Popen.communicate

原因相同。没有timeout参数

Popen的所有有效参数列表:https://docs.python.org/3/library/subprocess.html#subprocess.Popen

其他用户使用subprocess.call(),而我使用subprocess.Popen(),所以我很困惑为什么会发生这种情况。

call()阻塞,直到命令结束或超时。Popen()不等待命令完成;它立即返回,因此它不接受timeout参数。您可以将timeout传递给wait()communicate()方法,这些方法等待进程完成或超时发生。

相关内容

  • 没有找到相关文章

最新更新