尝试执行使用多处理程序包的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
检查对的权限/dev/shm。在我的笔记本电脑(Ubuntu)上,它看起来像这样:
$ ls -ld /dev/shm drwxrwxrwt 2 root root 40 2010-01-05 20:34 shm
要永久设置正确的权限(即使在重新启动后),请将以下内容添加到您的/etc/fstab:
/etc/fstab
none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0
还没有尝试过,只是从论坛帖子复制而来。