python - 在 python 多处理中, .get() 总是超时,即使在已知可以工作的代码中
问题描述
在我尝试使用 .get() 显示一些结果之前,我的多处理代码似乎工作正常,除非我使用 .get(timeout=5),否则它将永远挂起,我得到一个错误说它超时。我直接使用多处理文档页面中的代码来确保没有错误。
from multiprocessing import Process, Queue
def f(q):
q.put([42, None, 'hello'])
if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=(q,))
p.start()
print(q.get(timeout=5)) # prints "[42, None, 'hello']"
p.join()
---------------------------------------------------------------------------
Empty Traceback (most recent call last)
<ipython-input-14-6adfdb672fe3> in <module>
8 p = Process(target=f, args=(q,))
9 p.start()
---> 10 print(q.get(timeout=5)) # prints "[42, None, 'hello']"
11 p.join()
~\Anaconda3\lib\multiprocessing\queues.py in get(self, block, timeout)
103 timeout = deadline - time.monotonic()
104 if not self._poll(timeout):
--> 105 raise Empty
106 elif not self._poll():
107 raise Empty
Empty:
我真的不知道为什么 .get() 会永远持续下去,因为我为多处理找到的几乎每一段示例代码似乎都可以很好地使用它。
解决方案
推荐阅读
- spring - Client authentication using certificates in spring without spring boot
- ios - Callkit - 如果从后台开始通话,则没有音频
- javascript - 链接未在 sharex 自定义上传器上发回
- linux - 我想以 6 秒的固定间隔打开多个 elink
- arrays - 合并分区/又名压缩算法
- javascript - 为每个用户只保留 100 条新记录,删除 firebase 中的旧记录
- node.js - passport-azure-ad 始终重定向到 failureRedirect 但未显示错误(nodejs)
- angular - 如何使用 Angular Routing 在 Angular 中管理多个文章帖子?
- docker - docker:拉取图像时出现“第一条记录看起来不像 TLS 握手”错误
- c - 可以使用 TensorFlow C API 训练 Keras 模型吗?