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

Python multiprocessing自定义Manager运行到manager.start()卡住问题求助

自定义multiprocessing管理器运行卡住问题解决方案

问题原因

  • IDE交互式运行环境限制:Spyder默认使用IPython内核、PyCharm默认的交互式控制台都不兼容Python多进程的spawn启动模式。Windows系统下multiprocessing默认采用spawn方式创建子进程,要求主模块可被安全重导入,交互式环境的主模块不是独立可导入的脚本文件,导致子进程启动失败卡死。
  • 语法兼容问题:你提供的示例是Python2语法,若在Python3环境下直接运行,print语句不符合语法规范,也可能引发运行异常。
  • Windows系统多进程启动缺失必要配置:Windows下运行多进程脚本未加freeze_support()配置,也会导致启动异常。

解决方案

  1. 调整运行方式:将代码保存为独立的.py文件,优先通过系统命令行执行python 文件名.py,如果要在IDE内运行,PyCharm选择普通Run模式而非在Python Console中执行;Spyder关闭「Run in IPython console」选项后再运行。
  2. 适配Python3语法:将原代码中的Python2式print语句改为Python3的函数调用格式。
  3. 补充Windows多进程兼容配置:在if __name__ == '__main__'块开头添加multiprocessing.freeze_support()调用。

修正后可运行代码

import multiprocessing
from multiprocessing.managers import BaseManager

class MathsClass(object):
    def add(self, x, y):
        return x + y
    def mul(self, x, y):
        return x * y

class MyManager(BaseManager):
    pass

MyManager.register('Maths', MathsClass)

if __name__ == '__main__':
    # 补充Windows多进程兼容配置
    multiprocessing.freeze_support()
    manager = MyManager()
    manager.start()
    maths = manager.Maths()
    # 改为Python3 print语法
    print(maths.add(4, 3))         # prints 7
    print(maths.mul(7, 8))         # prints 56

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:18:04