尝试执行使用多处理程序包的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

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

有什么解决方案可以以普通用户(不是root)身份运行它?

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

最佳答案

为了使POSIX信号正常工作,用户需要对共享内存(/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复制而来。

10-08 18:10