为什么这个Python并行循环要比顺序循环花费更长的时间?

2024-09-28 23:26:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这段代码,我试图在前面的question的基础上进行并行处理。下面是使用2个进程的代码。在

import  multiprocessing
import timeit

start_time = timeit.default_timer()

d1 = dict( (i,tuple([i*0.1,i*0.2,i*0.3])) for i in range(500000) )
d2={}

def fun1(gn):
    x,y,z = d1[gn]
    d2.update({gn:((x+y+z)/3)})

#
if __name__ == '__main__':
    gen1 = [x for x in d1.keys()]
    #fun1(gen1)
    p= multiprocessing.Pool(2)
    p.map(fun1,gen1)
    print('Script finished')
    stop_time = timeit.default_timer()
    print(stop_time - start_time)

输出为:

^{pr2}$

如果我把程序改成顺序的

fun1(gen1)
#p= multiprocessing.Pool(2)
#p.map(fun1,gen1)

输出为:

Script finished
0.8345944193950299

所以并行循环比顺序循环花费更多的时间,超过了两倍。(我的电脑有两个内核,运行在Windows上)我试着在这个主题上找到类似的问题,thisthis,但找不出原因。在这个例子中,如何使用多处理模块来提高性能?在


Tags: 代码inimportdefaultfortimemultiprocessingstart