【问题标题】:Python Multiprocessing get does not timeoutPython多处理get不会超时
【发布时间】:2015-12-29 20:20:52
【问题描述】:

我正在测试一些代码,以使用ProcessQueue 的多处理来超时函数调用。 Queue.get() 方法采用可选的超时参数。我编写了以下测试以确认当被调用进程花费的时间比调用get 分配的时间长时它会引发超时错误,但它不会引发错误。谁能告诉我我是如何未能正确测试get 超时的?我在 Windows 7 和 python 2

import time
from multiprocessing import Process, Queue


def f(q, t):
    time.sleep(t)
    q.put(0)

if __name__ == '__main__':
    q = Queue()
    p = Process(target=f, args=(q, 15, ))
    p.start()
    x = q.get(1)
    print "received ", x

【问题讨论】:

  • Queue.get 的第一个参数是是否阻塞。第二个参数是等待的时间长度(以秒为单位)。

标签: python timeout multiprocessing


【解决方案1】:

documentationQueue.get 接收 2 个参数:blocktimeout,按此顺序。你应该这样称呼它

q.get(timeout=1)

【讨论】:

  • 谢谢!我错误地查看了 multiprocessing.pool.AsyncResult 的 get 方法的文档...感谢您的帮助。
猜你喜欢
  • 2016-12-07
  • 1970-01-01
  • 2017-10-21
  • 2012-12-15
  • 2016-11-22
  • 2018-07-29
  • 2011-04-11
  • 2021-12-23
  • 1970-01-01
相关资源
最近更新 更多