0

我是 python 新手,我正在尝试并行扩展我的处理。我有一个包含一定数量元组的文件,每个元组在最后一列中都有一定的值。我想拆分此文件数据并将我的函数并行应用于每个块。但问题是根据最后一列的值将数据分成块,并为每个块应用函数。例如,最后一列可能有一些元组的“a”和一些元组的“b”和一些的“c”。所以在那种情况下,我应该得到三个块并并行处理它。最后一列中唯一值的数量可能会因数据集而异,因此我需要相应地使用 CPU。

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

Q2:在处理完上述块后,我需要所有的输出,顺序无关紧要,然后我需要使用整个输出进行进一步处理,我怎样才能让我的主程序等到所有这些处理完成?

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

4

1 回答 1

3

假设,正如您所描述的,您在 dictionary 上有三个集合作为值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
于 2014-09-17T14:01:39.343 回答