这是我的完整代码
我已经成功地用一个小片段重现了我的主代码的行为。
在Google Colab Env 中,假设我设置hardware accelerator为GPU.
这是小片段:
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 set,mp.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
矫枉过正的解决方案 …