首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多进程输出比单进程慢

多进程输出比单进程慢
EN

Stack Overflow用户
提问于 2017-06-25 02:08:50
回答 2查看 1.2K关注 0票数 0

我正在运行这段代码,使用多进程运行脚本似乎比通过单进程运行脚本要慢。

我做错了什么吗?

代码语言:javascript
复制
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))

输出为

代码语言:javascript
复制
[1, 1, 5, 1]   # single process
time is 0.444
[1, 1, 5, 1]   #multi-processes
Took 0.751 seconds

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-06-25 02:11:37

这是多进程优势的一个坏例子。它显然会更慢,因为您在创建和启动每个进程上花费的时间比在执行函数上花费的时间更多。如果你有非常大的耗时的函数,那么多处理是明智的,所以你把它放在单独的进程中。

票数 3
EN

Stack Overflow用户

发布于 2017-06-25 02:40:47

你的时机不公平。list(map(gcd, numbers))是进程内操作,不会启动新进程。

Pool类表示一个工作进程池。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44739465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档