You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将迭代range的for循环改写为Multiprocessing多进程版本并解决空结果问题

问题核心原因

Python多进程间默认不共享全局变量的内存空间,你在子进程中对全局results列表的修改仅作用于子进程自身的内存副本,不会同步到主进程,因此最终主进程打印的results始终为空。

适配你的场景的最简解决方案

直接使用pool.map的返回值即可,pool.map会自动收集每个函数调用的返回值,按输入顺序拼接为列表返回,无需自行维护全局结果列表:

from multiprocessing import Pool

def compute_value(i):
    # 此处替换为你实际的计算逻辑
    return i

if __name__ == '__main__':
    n_iterations = 10 # 替换为你实际的循环总次数
    pool = Pool()
    results = pool.map(compute_value, range(n_iterations))
    # 回收进程资源
    pool.close()
    pool.join()
    print(results)
补充说明
  • pool.map返回的结果顺序和输入的range(n_iterations)顺序完全一致,不会因为多进程执行顺序不同出现结果错位。
  • 如果你的compute_value需要传入多个参数,可改用pool.starmap,将多组参数打包为元组组成的列表传入即可。
  • 进程池使用完毕后务必执行close()和join()回收资源,避免产生僵尸进程占用系统资源。

内容的提问来源于stack exchange,提问作者MMM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:42:01