python中进行多处理,OSError:[Errno 16]设备或资源繁忙

时间:2018-08-17 10:02:39

标签: python-2.7 python-multiprocessing

我正在测试python 2.7中的multiprocessing Manager软件包,并且遇到了一个问题,该问题已在使用Unix(https://bugs.python.org/issue13978)的NFS中进行了记录。问题是,尽管这突出了问题,但我不清楚您如何解决该问题,或者有什么替代方案?

from multiprocessing import Manager

if __name__ == '__main__':
    Manager()

然后我调用脚本并得到:

Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/util.py", line 274, in 
_run_finalizers
finalizer()
File "/usr/lib/python2.7/multiprocessing/util.py", line 207, in __call__
res = self._callback(*self._args, **self._kwargs)
File "/usr/lib/python2.7/shutil.py", line 252, in rmtree
onerror(os.remove, fullname, sys.exc_info())
File "/usr/lib/python2.7/shutil.py", line 250, in rmtree
os.remove(fullname)
OSError: [Errno 16] Device or resource busy: '/home/user/.tmp/pymp-xrl_Vc/.nfs0000000196'

如果我不能使用Manager,还有另一种方法可以在多个进程之间共享对象,还是有解决方法(建议的manager.shutdown和del manager方法无效)?

今天有更多时间来研究这个问题,经过一番挖掘,我找到了一个导致干净退出的解决方案(即没有错误)。

from multiprocessing import Manager
mp = Manager()
mp.shutdown()
#results in the above error

mp = Manager()
mp._process.terminate()
mp.shutdown()
#shutdown complete without any errors

我不太清楚为什么这行得通或者是明智的选择

0 个答案:

没有答案