Python 多处理 get 不会超时

标签 python timeout multiprocessing

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

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

最佳答案

来自documentationQueue.get 按顺序接收 2 个参数:blocktimeout。你应该这样调用它

q.get(timeout=1)

关于Python 多处理 get 不会超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34518450/

相关文章:

python - 循环遍历数据框列并绘制所有变量?

javascript - Node.js 中的 http.request 超时回调

c++ - 通过 setsockopt() 禁用套接字超时

Python 多重处理 - 如何提高效率

python - 无法修改函数以独立工作而不是依赖于返回的结果

python - Linux 邮件服务器,如何知道新邮件已经到达

python - 如何从 2017.0、2018.0、2019.0 等中删除 .0?

python - 如何在 Python 中将 csv 文件列中的最小/最大值查找为类似 JSON 的格式?

c# - 如何在 C# 中为大型 HTTP 请求设置 HttpWebRequest.Timeout

Python多处理无限循环