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

Python 如何使用multiprocessing多进程将处理后的列表元素加入输出列表

Python多进程并行处理列表元素实现方案

你可以直接使用Python标准库的multiprocessing.Pool实现需求,代码改动量非常小,如下是完整实现:

from multiprocessing import Pool

# 你原来的处理函数
def get_output(n):
    output = # 此处保留你原来的整数处理逻辑
    return output

input_list = [1,2,3,5,6,8,5,5,8,6,5,2,5,2,5,4,5,2]

if __name__ == '__main__':
    # 不指定进程数时默认使用当前设备的CPU核心数
    with Pool() as pool:
        # map方法会自动将input_list的每个元素传入get_output执行,返回结果列表
        output_list = pool.map(get_output, input_list)
    
    # 此处可以正常使用output_list
    print(output_list)

如果你的输入列表非常大,想要边处理边获取结果,可以把map换成imap,迭代获取返回值即可,不需要等所有元素处理完成再拿到结果:

if __name__ == '__main__':
    with Pool() as pool:
        output_list = []
        for result in pool.imap(get_output, input_list):
            output_list.append(result)
            # 此处可以添加进度打印等自定义逻辑

注意事项

  • Windows系统必须将多进程执行逻辑放在 if __name__ == '__main__' 代码块内,否则会触发无限创建子进程的错误
  • 多进程仅适合计算密集型的处理逻辑:如果get_output内部逻辑非常简单,进程间通信的开销反而会导致执行速度比串行更慢
  • 传入的处理函数get_output必须支持pickle序列化:普通顶层定义的函数都符合要求,不要使用嵌套闭包、未序列化的类实例方法作为处理函数
  • 进程数默认和CPU核心数一致即可,无需手动设置过大的值,否则频繁的进程切换会抵消并行收益

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:27:00