Python类实现多进程被其他类组合调用时报RuntimeError如何解决
问题原因
这个错误是Python多进程在spawn启动模式下的常见问题,Windows、macOS平台默认使用spawn模式创建进程:子进程启动时会重新导入当前运行的主模块,如果主模块里的可执行代码没有做入口保护,导入时会重复执行创建实例、启动进程的逻辑,陷入循环触发报错。
解决方案
修改check.py代码,将执行逻辑放到if __name__ == '__main__'保护块中即可:
import b if __name__ == '__main__': obj = B('Test') obj.processingB()
补充说明
- 如需保证跨平台兼容性,可以主动指定进程启动方式,在入口保护块中新增一行
multiprocessing.set_start_method('spawn')即可,注意该行必须放在保护块内部。 - 现有代码中的实例方法
_worker作为进程执行函数是合法的,concurrent.futures会自动处理实例方法的序列化逻辑,不需要额外调整。
内容的提问来源于stack exchange,提问作者Abhay Verma
相关产品推荐
相关产品推荐

