【发布时间】:2020-04-11 14:05:53
【问题描述】:
我正在尝试衡量 multiprocessing 模块 中的 pool class 相对于普通编程的优势,并且我正在使用函数计算数字的平方。现在,当我计算找到所有三个数字的平方所需的时间时,大约需要 ~0.24 秒,但是当我在 for 循环中正常计算时,它需要的时间甚至更少 ~0.007 秒。这是为什么?带池的代码部分不应该更快吗?
import time
from multiprocessing import Pool,Process
def f(x):
return x*x
if __name__ == '__main__':
start = time.time()
array = []
for i in range(1000000):
array.append(i)
with Pool(4) as p:
(p.map(f, array))
print(time.time()-start) # time taken when using pool
start1 = time.time()
for i in range(1000000):
f(array[i])
print(time.time()-start1) # time taken normaly
【问题讨论】:
-
你的任务太简单了。创建流程的开销将吞噬所有优势。
-
那么我应该对此进行哪些更改才能具有重要价值,请帮助
-
给它一些重要的工作。通常所有花费超过 100 毫秒的事情都会更糟地产生一个进程。
-
如果您只是想看看不同之处,请将
time.sleep(3)添加到函数中。 -
你不必产生更多的进程,你必须给他们更长的运行时间。
标签: python python-multiprocessing