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