gpt4 book ai didi

python - Python 中的多重处理比没有时慢

转载 作者:太空宇宙 更新时间:2023-11-03 18:56:40 28 4
gpt4 key购买 nike

我在一台 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%,而且我并没有耗尽内存。

为什么这个程序在多处理的情况下会慢很多?

最佳答案

Windows 没有 fork(),因此多处理必须通过在每次启动新进程时导入 __main__ 模块来解决这个问题。

这意味着当每个子进程运行时,它不仅运行目标函数,还运行文件末尾的部分。将其移至方 block 中,速度应该会更快!

关于python - Python 中的多重处理比没有时慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17118781/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com