python - 为什么 `multiprocessing.Queue` 使用馈线线程?
问题描述
从文档中:
当一个进程第一次将一个项目放入队列时,一个馈线线程被启动,它将对象从缓冲区传输到管道中。
这是为什么?multiprocessing.SimpleQueue
没有这样的线程相处。仅仅是为了让作家不必等待对象被腌制吗?还是另有原因?
这个问题似乎是相关的,但那里给出的答案对我没有多大帮助。
解决方案
如果底层的缓冲区已满,似乎没有后台馈线线程(如 in SimpleQueue
)将阻塞。使用容量为 16 页(自 Linux 2.6.35 起)实现。使用馈线线程(如 中),编写者不必等待底层管道。put
Pipe
Pipe(duplex=False)
os.pipe
Queue
推荐阅读
- java - 如何在我的个人网站上部署 Java 游戏?
- web-applications - 构建连接到 Google API 的应用
- javascript - Django 没有通过 DetailView 重新渲染 css 和 JS
- c++ - 如何从文本中保留一个单词并将其放入链接列表中?
- python-3.x - 在python3的foreach循环中定义步长
- sql - 为什么这个 Postgis 距离查询这么慢?Postgres 的查询估计器减少了 10000 倍?
- javascript - JavaScript 对象数组 - 基于嵌套对象从数组中删除重复对象
- java - 使用 JNDI 和 DataSource 的简单应用程序,没有服务器、ServiceUnavailableException、ConnectException
- .net - 在 Azure App Services 应用程序中向 localhost 发出请求
- javascript - 数以千计的引导开关:强制回流可能是性能瓶颈