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

Python multiprocessing Pool.apply()触发RuntimeError无法运行问题

问题根源

你修改后的代码只把结果计算逻辑包进了if __name__ == '__main__'判断,但是pool = mp.Pool(mp.cpu_count())这行创建进程池的代码依然在全局作用域。Windows系统下Python的多进程默认使用spawn启动方式,子进程会导入当前主模块执行全局代码,这时候就会重复执行创建进程池的逻辑,触发启动阶段报错。

正确修改后的完整代码

import multiprocessing as mp

list_a = [[1, 2, 3], [5, 6, 7, 8], [10, 11, 12], [20, 21]]
list_b = [[2, 3, 4, 5], [6, 9, 10], [11, 12, 13, 14], [21, 24, 25]]

def get_commons(list_1, list_2):
    return list(set(list_1).intersection(list_2))

if __name__ == '__main__':
    pool = mp.Pool(mp.cpu_count())
    results = [pool.apply(get_commons, args=(l1, l2)) for l1, l2 in zip(list_a, list_b)]
    pool.close()
    pool.join() # 建议加上这行等待所有子进程执行完毕
    print(results)

补充说明

  • 额外添加的pool.join()是为了等待所有子进程执行完成后再继续执行主进程后续逻辑,避免主进程提前结束导致异常。
  • 执行后输出的结果为:[[2, 3], [6], [11, 12], [21]],和预期计算公共元素的逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:36:04