首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用多处理模块并行访问python生成器

使用多处理模块并行访问python生成器
EN

Stack Overflow用户
提问于 2014-11-12 22:30:25
回答 1查看 1.8K关注 0票数 2

我有一个Python生成器,它从数据仓库中提取了一个相当大的表。在提取数据后,我正在以分布式的方式使用芹菜处理数据。经过测试,我意识到发电机是瓶颈。它不能为芹菜工人生产足够的工作任务。这时,我决定优化我的python生成器。

关于生成器的更多细节

生成器使用块查询访问数据仓库,这些查询结果基本上是相互独立和无状态的。因此,我认为这是一个很好的选择,使其并行使用multiprocessing模块。我环顾四周,看看如何并行化发电机,没有太多的方向。

因此,如果我的Python生成器生成无状态的数据块,这应该是多处理的一个很好的候选,对吗?有什么方法来并行python生成器吗?另外,在Python生成器中使用并行性有什么副作用我应该知道吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-12 22:37:23

我认为您可能试图在错误的抽象级别上解决这个问题。Python生成器本质上是有状态的,因此,如果没有某种形式的同步,就无法在进程之间拆分生成器,这将扼杀通过并行性可能实现的任何性能提升。相反,我建议为每个进程创建单独的生成器,并让它们在某种程度上相互抵消。

例如,如果有4个进程,基本上有第一个进程处理第一个块,然后它处理第5个块,然后是第9个块,然后添加N,其中N是设置的进程数。这要求您在启动时向每个进程传递一个唯一的索引。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26897922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档