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

为何在Jupyter Notebook中pool.imap()无法执行任何任务?

问题分析与解决

你的代码运行时无输出且持续卡住,甚至无法关闭内核,核心原因是Windows系统下Python多进程的启动特性:Windows没有Unix的fork机制,子进程会重新导入整个脚本模块,若缺少主程序入口判断,子进程会重复创建进程池,陷入无限进程创建的死循环,最终导致程序卡死。

修复后的代码

import multiprocessing as mp

def add1(x):
    return x + 1

if __name__ == '__main__':
    pool = mp.Pool(processes=10)
    for x in pool.imap(add1, [1,2,3]):
        print(x)
    pool.close()
    pool.join()  # 建议添加,确保主进程等待所有子进程执行完毕

关键说明

  • 必须用if __name__ == '__main__':包裹创建进程池和执行任务的代码,确保只有主进程才会初始化进程池,子进程不会重复执行这段逻辑
  • pool.join()能让主进程等待所有子进程完成任务后再退出,避免子进程变成僵尸进程
  • 若在Jupyter Notebook等交互式环境中运行,多进程兼容性较差,建议转用普通.py脚本执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:50:31