首页 > 解决方案 > python中的多处理,OSError:[Errno 16]设备或资源繁忙

问题描述

我正在测试 python 2.7 中的多处理管理器包,并遇到了一个已经记录在 Unix 上运行的 NFS ( https://bugs.python.org/issue13978 ) 的问题。问题是虽然这突出了问题,但我不清楚您如何解决这个问题,或者替代方案是什么?

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.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

我不太清楚为什么这样做会起作用,或者这样做是否明智

标签: python-2.7python-multiprocessing

解决方案


推荐阅读