Python多处理:权限被拒绝

2024-05-21 07:32:17 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试执行使用多处理包的python程序时出错:

  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

用户似乎没有访问共享内存的权限。当以根权限执行时,它可以正常工作。

是否有任何解决方案可以将其作为普通用户(而不是根用户)运行?

Python版本2.6.2,操作系统是Linux 2.6.18(CentOS版本5.4),它是VPS机器。


Tags: 用户inpyself权限synchronizeinitlib
3条回答

为了让POSIX信号量工作,用户需要r/w访问共享内存(/dev/shm)。

检查对/dev/shm的权限。在我的笔记本电脑(Ubuntu)上看起来是这样的:

$ ls -ld /dev/shm
drwxrwxrwt 2 root root          40 2010-01-05 20:34 shm

要永久设置正确的权限(即使在重新启动后),请将以下内容添加到您的/etc/fstab

none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0

没有试过,只是从forum post复制过来的。

在我的OVH VPS Classic中,这个错误是由/dev/shm和/run/shm中的循环引起的。 两者都是相互链接的符号链接。 所以我做了如下的事情:

# rm /dev/shm
# mkdir /dev/shm
# chmod 777 /dev/shm
# nano /etc/fstab

然后我修改了shm行:

none /dev/shm tmpfs rw 0 0

致:

none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0

重新启动服务器。。。这就解决了问题! 或者,您可以手动安装shm:

# mount /dev/shm

希望这有帮助:-)

一个不需要重新启动的简单解决方案是

sudo chmod 777 /dev/shm

这解决了我的问题。

相关问题 更多 >