python - 什么是实现共享队列的最佳方法,工作人员推送数据并掌握在 Python 中有效地获取批处理数据?
问题描述
我现在的用例是在一个主从管道中,详细如下:
对于每个工人:
- 从 master 检索当前参数(共享内存参数)
- 使用检索到的参数生成一些数据
- 将数据推送到某种共享队列结构中
- 重复
对于大师:
- 从队列中收集一批数据,比如batch size = 32
- 使用收集的数据更新参数(跨进程共享)
- 重复
我尝试过使用 Python 的内置多处理的简单实现Process
,Queue
但是,似乎所有工作人员和主人都在竞争访问共享队列。因为我期望在worker异步生成数据并一个一个推送到队列的过程中,master可以一次检索很多数据,应该会快得多。
但据我观察,队列是无限增长的,所以看起来master实际上pop
是队列中的一个数据条目,比如批量大小32,它执行32次pop函数,这是不希望的异步的好处减少了。
有没有更好的想法如何有效地实施它?
解决方案
推荐阅读
- openlayers - 反转 Y 轴
- javascript - 如何自定义 jquery.formset.js django
- reactjs - React Hooks,尝试用更新的值替换对象的一部分
- amazon-web-services - 在地图状态迭代器中使用“ResultPath”字段时出错?“Step Functions 不支持字段‘ResultPath’”
- laravel - 如何在 AWS Elastic Search 中进行批量索引
- python - 通过字典内的元素查询 Firestore 中的文档
- sql - 选择需要条件帮助的案例
- maxima - 我怎样才能给一个最大值的数组变量一个值?
- multithreading - 如何从kotlin中的线程中提取返回值
- python - 如何从 discord API (URL) 获取用户状态