繁体   English   中英

字典中每个键的Python多处理

[英]Python multiprocessing for each key in dictionary

我是python的新手,我正在尝试扩展并行处理。 我有一个具有一定数量元组的文件,每个元组在最后一列中都具有一定的值。 我想分割此文件数据,然后将我的函数并行地应用于每个块。 但是,事情是根据最后一个列的值将数据拆分为多个块,并对每个块应用该函数。 例如,最后一列对于某些元组可能具有“ a”,对于某些元组可能具有“ b”,对于某些元组可能具有“ c”。 因此,在那种情况下,我应该获得三个块并并行处理。 最后一列中唯一值的数量可能会随数据集而变化,因此我需要相应地使用CPU。

问题1:到目前为止,我一直尝试读取文件并根据该记录创建一个字典,因此基本上是上述三个键值对,其中一个键为“ a”,所有记录的值都为“ a”,与“ b”和“ c”相同。 我可以在多处理中使用chunksize,但是这里不是size,它基于密钥,那么我该如何实现呢?

Q2:处理完上述块后,我需要所有输出的总和,顺序无关紧要,然后需要将整个输出用于进一步的处理,我该如何使我的主程序等待所有这些过程完成?

让我知道是否需要进一步的输入。 谢谢。

假设,正如您所描述的,您在字典d上有三组值,并希望分别将函数f应用于它们:

from multiprocessing import Pool
p = Pool()                                   #number of processes = number of CPUs
keys, values= zip(*d.iteritems())            #ordered keys and values
processed_values= p.map( f, values )         #apply the function f to each set and wait for result
#then proceed to join the three sets

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM