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

PyCharm运行Python控制台时遭遇PicklingError问题求助

Python多进程PicklingError问题解决

错误原因

这个PicklingError的核心问题是:Python多进程的Pool依赖pickle序列化函数并传递给子进程,而如果你的代码是在**交互式环境(如Jupyter Notebook、IPython)**中运行,函数f没有被正确注册到__main__模块的命名空间里,导致子进程无法通过属性查找定位到该函数。

解决方法

  • 标准脚本运行(推荐)
    将代码保存为独立的.py文件(例如multiprocess_test.py),打开终端执行命令:

    python multiprocess_test.py
    

    普通脚本文件中,函数会被正确关联到__main__模块,pickle可以正常序列化。

  • 交互式环境适配方案
    如果必须在Jupyter等交互式环境中运行,把函数放到单独的模块文件中导入:

    1. 创建func_utils.py文件,写入:
      def f(x):
          return x * x
      
    2. 在交互式环境中执行:
      from multiprocessing import Pool
      from func_utils import f
      
      if __name__ == '__main__':
          with Pool(5) as p:
              print(p.map(f, [1, 2, 3]))
      
  • 替代库方案
    使用pathos库替代标准多进程模块,它用dill替代pickle,支持更灵活的序列化:

    1. 安装库:
      pip install pathos
      
    2. 修改代码:
      from pathos.multiprocessing import Pool
      
      def f(x):
          return x * x
      
      if __name__ == '__main__':
          with Pool(5) as p:
              print(p.map(f, [1, 2, 3]))
      

内容的提问来源于stack exchange,提问作者hmd.pouya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:37:05