【发布时间】:2016-03-20 18:31:46
【问题描述】:
相关:Python multiprocessing: Permission denied
我想用 Python 的 multiprocessing.Pool
import multiprocessing as mp
pool = mp.Pool(3)
for i in range(num_to_run):
pool.apply_async(popen_wrapper, args=(i,), callback=log_result)
我得到操作系统错误
File "/usr/local/lib/python2.6/multiprocessing/__init__.py", line 178, in RLock
return RLock()
File "/usr/local/lib/python2.6/multiprocessing/synchronize.py", line 142, in __init__
SemLock.__init__(self, RECURSIVE_MUTEX, 1, 1)
File "/usr/local/lib/python2.6/multiprocessing/synchronize.py", line 49, in __init__
sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
OSError: [Errno 13] Permission denied
我在相关问题中读到这是由于 /dev/shm 没有 r/w
除了更改/dev/shm中的权限之外,有没有办法在代码中以root身份运行?
我最初以为你可以做类似os.umask() 的事情,但它没有用
编辑(重新表述问题):
- 假设用户名 A 对目录 A 具有 r/w 访问权限
- 您是用户 B,您的程序需要访问目录 A。您如何以用户 A 的身份运行程序?
【问题讨论】:
-
您不应该尝试让您的代码以 root 身份运行。解决方案是根据您链接的问题使用 root 访问永久修复您的系统。
-
@JohnZwinck 你能回答问题的编辑部分吗?我只是在想一个与root无关的案例
-
@ealeon:所涉及的用户是什么并不重要。只需修复
/dev/shm上的权限即可。我在这里没有看到任何缺点。 -
@JohnZwinck 问题是......除了修复权限之外还有其他方法吗?你的答案是否定的,对吗?还是有其他方法...?
标签: python multiprocessing python-2.x python-multiprocessing