Многопроцессорная обработка 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 это хорошо работает.

Там какое-либо решение состоит в том, чтобы выполнить его как обычного пользователя (не корень)?

Версия 2.6.2 Python, ОС является Linux 2.6.18 (Выпуск 5.4 CentOS), и это - машина VPS.

49
задан Roman Dolgiy 15 September 2011 в 23:30
поделиться

1 ответ

Для работы семафоров 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.

65
ответ дан 7 November 2019 в 11:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: