在Python中实现共享队列的最佳方法是什么,让工人推送数据并掌握如何高效地获取批处理数据?

2024-09-28 12:13:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在拥有的用例是在一个主工管道中,详细如下:

  • 对于每个工人:

    • 从主机检索当前参数(共享内存参数)
    • 使用检索到的参数生成一些数据
    • 将数据推送到某种共享队列结构中
    • 重复
  • 对于master:

    • 从队列中收集一批数据,假设批量大小为32
    • 使用收集的数据更新参数(跨流程共享)
    • 重复

我尝试了一个简单的实现,使用Python的内置多处理ProcessQueue,但是,似乎所有的工作人员和主控人员都在竞争访问共享队列。因为我期望在工作人员异步生成数据并一个接一个地推送到队列的过程中,主控可以一次检索许多数据,速度应该快得多

但是从我观察到的情况来看,队列是无限增长的,所以看起来主队列实际上是pop队列中的一个数据条目,一次一个,比如说批量大小32,它执行32次pop函数,这是不希望的,因为异步好处减少了

有没有更好的办法来有效地实施它


Tags: 数据master参数管道队列批量流程用例

热门问题