Dav*_*rks 5 python process multiprocessing tensorflow
Pool当您使用 Python创建进程时multiprocessing,这些进程将分叉,父进程中的全局变量将显示在子进程中,如下面的问题所述:
这似乎包括导入的模块。对于在__init__. Tensorflow 就是这样的一个模块,一旦导入,它就会尝试向 GPU 分配内存。这会导致子进程崩溃,因为父进程已经采取了该操作。
有没有好的方法来避免在fork进程中加载tensorflow模块?
Ubuntu 上的 Python 2.7 (posix)
经过多次调试后,我意识到我的问题陈述还不够充分。问题是我确实在子进程之一中加载了张量流(我忘记了!),并且子进程只需要使用 CPU,而不是 GPU。我被迫更改环境变量以在子进程上禁用 CUDA:
os.environ['CUDA_VISIBLE_DEVICES'] = ''
p = multiprocessing.Pool(processes=4)
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1755 次 |
| 最近记录: |