使用for循环实现Python多进程为何耗时显著增加?
多进程性能骤降的原因分析
先对比你提到的两段核心代码的关键差异:
视频中的代码(耗时1.8秒)
a = mp.Process(target=counter, args=(25000000,)) b = mp.Process(target=counter, args=(25000000,)) c = mp.Process(target=counter, args=(25000000,)) d = mp.Process(target=counter, args=(25000000,)) a.start() b.start() c.start() d.start() b.join() a.join() c.join() d.join()
你修改后的代码(耗时10.8秒)
processes = [] for i in range(1, 4): processes.append(mp.Process(target=counter, args=(250000000,))) for i in range(len(processes)): processes[i].start() for i in range(len(processes)): processes[i].join()
性能差异的核心原因和for循环无关,是两段代码的任务量与进程数量完全不同:
- 单进程任务量差10倍:视频里每个进程处理2500万次计数,你写的是2.5亿次,单进程工作量直接翻了10倍
- 进程数量少1个:视频里是4个进程并行,你的循环
range(1,4)只生成3个进程,并行处理能力进一步降低
把这两个点修正——比如把循环改成range(4),参数改成25000000——再运行,性能就能和视频版本对齐了。
内容的提问来源于stack exchange,提问作者agctute
相关产品推荐
相关产品推荐

