我在具有 2 个内核但 4 个线程的计算机上使用 python 3.3。我正在尝试学习使用多处理来加速代码,但是使用它时我的代码变慢了。
为了开始我的学习,我做了一个小程序:
from multiprocessing import Process
import time
def f():
s = 0
for i in range(2*10**7):
s += i
return s
if __name__ == '__main__':
t = time.time()
p1 = Process(target = f)
p2 = Process(target = f)
p3 = Process(target = f)
p4 = Process(target = f)
p1.start()
p2.start()
p3.start()
p4.start()
p1.join()
p2.join()
p3.join()
p4.join()
print (time.time()-t)
t2 = time.time()
for a in range(4):
f()
print(time.time()-t2)
3 次运行的平均值,第一部分有多重处理需要 17.15 秒,而没有多重处理的第二部分需要 6.24 秒。使用 Windows 任务管理器,我看到我的计算机确实在第一部分使用了 100% 的 CPU,而第二部分仅使用了 25%,而且我没有内存不足。
为什么这个程序的多处理速度如此之慢?