为什么多处理比简单的 for 循环慢?
Why multiprocessing is slower than simple for loop?
我刚刚了解了多处理并尝试了解它与简单的 for 循环相比有多快。
我用简单的代码来对比一下,
import multiprocessing
from time import time as tt
def spawn(num,num2):
print('Process {} {}'.format(num,num2))
#normal process/single core
st = tt()
for i in range (1000):
spawn(i,i+1)
print('Total Running Time simple for loop:{}'.format((tt()-st)))
#multiprocessing
st2 = tt()
if __name__ == '__main__':
for i in range(1000):
p=multiprocessing.Process(target=spawn, args=(i,i+1))
p.start()
print('Total Running Time multiprocessing:{}'.format((tt()-st2)))
我得到的输出显示多处理比简单的 for 循环慢得多
Total Running Time simple for loop:0.09924721717834473
Total Running Time multiprocessing:40.157875299453735
谁能解释为什么会这样?
这是因为处理流程的开销。在这种情况下,进程的创建和删除不会影响代码从 运行 并行获得的性能提升。如果执行的代码更复杂,可能会有加速。
我刚刚了解了多处理并尝试了解它与简单的 for 循环相比有多快。 我用简单的代码来对比一下,
import multiprocessing
from time import time as tt
def spawn(num,num2):
print('Process {} {}'.format(num,num2))
#normal process/single core
st = tt()
for i in range (1000):
spawn(i,i+1)
print('Total Running Time simple for loop:{}'.format((tt()-st)))
#multiprocessing
st2 = tt()
if __name__ == '__main__':
for i in range(1000):
p=multiprocessing.Process(target=spawn, args=(i,i+1))
p.start()
print('Total Running Time multiprocessing:{}'.format((tt()-st2)))
我得到的输出显示多处理比简单的 for 循环慢得多
Total Running Time simple for loop:0.09924721717834473
Total Running Time multiprocessing:40.157875299453735
谁能解释为什么会这样?
这是因为处理流程的开销。在这种情况下,进程的创建和删除不会影响代码从 运行 并行获得的性能提升。如果执行的代码更复杂,可能会有加速。