首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python multiprocessing 错误 context has already been set 解决方案

Python multiprocessing 错误 context has already been set 解决方案

作者头像
为为为什么
发布于 2022-08-10 14:46:35
发布于 2022-08-10 14:46:35
4K0
举报
文章被收录于专栏:又见苍岚又见苍岚

Python 多个包共同使用 multiprocessing 模块时可能报错 context has already been set, 本文记录原因和解决方案。

问题复现

  • 当 multiprocessing 模块被第二次配置 start_method 时会报错
代码语言:javascript
复制
import multiprocessing

if __name__ == '__main__':
    multiprocessing.set_start_method('spawn')
    multiprocessing.set_start_method('spawn')

  • 或者在 get_start_method 后配置 start_method 也会报错:
代码语言:javascript
复制
import multiprocessing

if __name__ == '__main__':
    print(multiprocessing.get_start_method())
    multiprocessing.set_start_method('spawn')

错误信息:

代码语言:javascript
复制
RuntimeError: context has already been set

问题原因

  • multiprocessing 模块的 start_method 被锁定后再次配置则会报错
  • 锁定条件包括
    • 配置 start_method: 调用 set_start_method 方法
    • 查看 start_method: 调用 get_start_method 方法

解决方案

  • 在配置 start_method 时配置参数 force=True
代码语言:javascript
复制
import multiprocessing

if __name__ == '__main__':
    print(multiprocessing.get_start_method())
    multiprocessing.set_start_method('spawn', force=True)

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年7月14日,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 问题复现
  • 问题原因
  • 解决方案
  • 参考资料
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档