我在尝试执行使用多处理包的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信号量工作,用户需要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
没试过这个,只是从论坛帖子中复制过来.