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

本文最后更新于:2022年7月14日 下午

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

问题复现

  • multiprocessing 模块被第二次配置 start_method 时会报错
1
2
3
4
5
import multiprocessing

if __name__ == '__main__':
multiprocessing.set_start_method('spawn')
multiprocessing.set_start_method('spawn')
  • 或者在 get_start_method 后配置 start_method 也会报错:
1
2
3
4
5
import multiprocessing

if __name__ == '__main__':
print(multiprocessing.get_start_method())
multiprocessing.set_start_method('spawn')
  • 错误信息:

    1
    RuntimeError: context has already been set

问题原因

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

解决方案

  • 在配置 start_method 时配置参数 force=True
1
2
3
4
5
import multiprocessing

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

参考资料


Python multiprocessing 错误 context has already been set 解决方案
https://www.zywvvd.com/notes/coding/python/python-multiprocess-context-err/multiprocess-context-err/
作者
Yiwei Zhang
发布于
2022年7月14日
许可协议