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

 筱白 发布于 2022-12-11 20:26

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

关于发电机的更多细节

生成器使用块查询命中数据仓库,这些查询结果基本上彼此独立且无状态.所以我认为这是使用该multiprocessing模块使其并行的一个很好的候选者.我环顾四周如何在没有太多方向的情况下并行化生成器.

因此,如果我的Python生成器生成无状态数据块,那么这应该是多处理的良好候选对吗?有没有办法并行化python生成器?还有任何副作用,我应该注意在Python生成器中使用并行性?

1 个回答
  • 我想你可能正试图在错误的抽象层次上解决这个问题.Python生成器本质上是有状态的,因此您无法在没有某种形式的同步的情况下跨进程拆分生成器,这将消除您通过并行性可能实现的任何性能提升.我建议为每个进程创建单独的生成器,并使它们相互偏移.

    例如,如果你有4个进程,你基本上让第一个进程处理第一个进程,然后处理第5个进程块,然后是第9个进程块,依此类推,添加N,其中N是你设置的进程数.这要求您在启动时将每个进程的唯一索引移交给它.

    2022-12-11 20:30 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有