多处理输出比单个过程慢



我正在运行此代码,并且似乎使用多过程运行脚本比通过一个过程运行它慢。

我做错了吗?

from time import time
numbers = [(1963309, 2265973), (2030677, 3814172),
           (1551645, 2229620), (2039045, 2020802)]
start = time()
results = list(map(gcd, numbers))
print(results)
end = time()

print('time is %.3f'%(end - start))
from multiprocessing import Pool

if __name__ == '__main__':
    start = time()
    with Pool(4) as p:
      print(p.map(gcd, numbers))
    end = time()
    #print('time is %.3f'%(end - start))
    print('Took %.3f seconds' % (end - start))

输出是

[1, 1, 5, 1]   # single process
time is 0.444
[1, 1, 5, 1]   #multi-processes
Took 0.751 seconds

谢谢。

这是多处理优势的一个糟糕例子。很明显,您会花更多的时间在创建和启动每个过程上,而不是执行您的功能。多处理明智的话,如果您确实具有很大的耗时功能,因此将其放在单独的过程中。

您的时间不公平。list(map(gcd, numbers))是一个过程中的操作,并且不会启动新的过程。

Pool类代表一个工作过程池。

启动新过程比简单地执行list(map(gcd, numbers))的速度慢,相对于list(map(...))Pool中有很多事情要启动该过程。这几乎就像比较大象和猎豹的速度一样。

相关内容

  • 没有找到相关文章

最新更新