多处理速度差异

时间:2016-07-26 10:55:03

标签: python multiprocessing

我正在对40 MB的数据集(英语句子)进行某种模式匹配。为了提高速度,我使用了多处理。我创建了 4 进程的。最初我将文件的内容保存在变量中,然后将其拆分为4个相等的部分并将其发送到函数。 这就是我在做的事情:

nl_split =  content.split('\n') #The whole data kept in content
lenNl=int(len(nl_split)/4)
part1,part2,part3,part4 = '\n'.join(nl_split[0:lenNl]),'\n'.join(nl_split[lenNl+1:2*lenNl]),'\n'.join(nl_split[2*lenNl+1:3*lenNl]),'\n'.join(nl_split[3*lenNl+1:4*lenNl])
pr = Pool(4)
rValue=pr.map(match_some_pattern,[part1,part2,part3,part4])

考虑90.148968935

作为第二种方法,我将文件分成4个并作为单独的文件传递给该函数。

pr = Pool(4)
rValue=pr.map(match_some_pattern,['part1.txt','part2.txt','part3.txt','part4.txt'])

考虑48.5109400749

当我比较他们的执行速度时,我发现第二种方法比第一种方法好得多。我认为第一种方法应该优于第二种方法,因为存在较少的文件操作。但结果却相反!

为什么第二种方法比第一种方法消耗更少的时间?

0 个答案:

没有答案