OSError 38 [Errno 38] с многопроцессорной обработкой - PullRequest
14 голосов
/ 17 мая 2011

У меня следующая ошибка:

$ sudo chmod a+rwxt /dev/shm/
$ ls -ld /dev/shm/
drwxrwxrwt 2 root root 4096 Feb  4 06:56 /dev/shm/
$ python
Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import multiprocessing
>>> mp = multiprocessing.Pool(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/multiprocessing/__init__.py", line 227, in Pool
    return Pool(processes, initializer, initargs)
  File "/usr/lib/python2.6/multiprocessing/pool.py", line 84, in __init__
    self._setup_queues()
  File "/usr/lib/python2.6/multiprocessing/pool.py", line 131, in _setup_queues
    self._inqueue = SimpleQueue()
  File "/usr/lib/python2.6/multiprocessing/queues.py", line 328, in __init__
    self._rlock = Lock()
  File "/usr/lib/python2.6/multiprocessing/synchronize.py", line 117, in __init__
    SemLock.__init__(self, SEMAPHORE, 1, 1)
  File "/usr/lib/python2.6/multiprocessing/synchronize.py", line 49, in __init__
    sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
OSError: [Errno 38] Function not implemented

Что еще может быть причиной этой ошибки (кроме доступа на чтение / запись к / dev / shm)?

Спасибо!

Ответы [ 2 ]

19 голосов
/ 30 мая 2012

Для всех, кто приходит сюда из Google, ответ: Реализация Django Celery - OSError errno 38 - Функция не реализована :

Получилось, добавив none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0 к /etc/fstab и перезагрузив

Вместо перезагрузки работает sudo mount /dev/shm.

5 голосов
/ 17 мая 2011

Я подозреваю, что это как-то связано с: http://bugs.python.org/issue3770

Из документов Python:

Предупреждение : для некоторых функций этого пакета требуется функционирование общего ресурса.реализация семафора в операционной системе хоста.Без него модуль multiprocessing.synchronize будет отключен, и попытки его импорта приведут к ошибке ImportError.См. Вопрос 3770 для получения дополнительной информации.

Это может или не может быть связано, поскольку речь идет о multiprocessing.synchronize, но из того, что я понимаю, некоторые реализации на некоторых платформах просто не реализуют семафорный API, на который опирается Python, который может быть вашимпроблема.

...