Я получаю ошибку при попытке выполнить программу 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 это хорошо работает.
Там какое-либо решение состоит в том, чтобы выполнить его как обычного пользователя (не корень)?
Версия 2.6.2 Python, ОС является Linux 2.6.18 (Выпуск 5.4 CentOS), и это - машина 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
Не пробовал, просто скопировал из сообщения на форуме /dev/shm.