小编J.G*_*J.G的帖子

mp.set_start_method('spawn') 触发了一个错误,指出上下文已经设置

这是我的完整代码

我已经成功地用一个小片段重现了我的主代码的行为。

Google Colab Env 中,假设我设置hardware acceleratorGPU.

这是小片段

import multiprocessing as mp

def foo(q):
    q.put('hello')

if __name__ == '__main__':
    mp.set_start_method('spawn')
    q = mp.Queue()
    p = mp.Process(target=foo, args=(q,))
    p.start()
    print(q.get())
    p.join()
Run Code Online (Sandbox Code Playgroud)

使用mp.set_start_method('spawn'),我得到了错误RuntimeError: context has already been setmp.set_start_method('spawn', force=True)如果我可以说,如果我使用它,它会陷入无限循环。

有什么办法可以防止在 Colab Env 中发生该错误?

PS请注意,mp.set_start_method('spawn')这行代码在我的代码中是必需的。否则,我收到错误RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the 'spawn' start method

矫枉过正的解决方案 …

multiprocessing google-colaboratory

5
推荐指数
1
解决办法
4470
查看次数