Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多处理模块并行访问python生成器_Python_Parallel Processing_Generator - Fatal编程技术网

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

使用多处理模块并行访问python生成器,python,parallel-processing,generator,Python,Parallel Processing,Generator,我有一个Python生成器,它从数据仓库中提取一个相当大的表。拉入数据后,我使用芹菜以分布式方式处理数据。经过测试,我意识到发电机是瓶颈。它不能为芹菜工人提供足够的工作。这就是我决定优化python生成器的时候 有关发电机的更多详细信息 生成器使用区块查询访问数据仓库,这些查询结果基本上相互独立且无状态。因此,我认为这是使用多处理模块使其并行化的一个很好的候选者。我环顾四周,看了看如何在没有太多方向的情况下并行化发电机 因此,如果我的Python生成器生成无状态的数据块,那么这应该是多处理的好选

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

有关发电机的更多详细信息

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


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

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

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