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 

它看起来像用户没有权限访问共享内存。 以root权限执行时,它工作正常。

有没有任何解决scheme,以普通用户(而不是根)运行它?

Python版本2.6.2,OS是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 

还没有尝试过,只是从论坛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 

希望这可以帮助 :-)