OSError 38 [Errno 38] with multiprocessing

匿名 (未验证) 提交于 2019-12-03 08:42:37

问题:

I'm having the following error:

$ 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 "", line 1, in    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 

What else could be the reason for this error (apart from read/write access to /dev/shm)?

Thanks!

回答1:

For anyone else coming here from Google, the answer is at Django Celery Implementation - OSError errno 38 - Function not implemented:

Got it working by adding none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0 to /etc/fstab and rebooting

Instead of rebooting, sudo mount /dev/shm works.



回答2:

I suspect this have to do something with this: http://bugs.python.org/issue3770

From the Python docs:

Warning: Some of this package’s functionality requires a functioning shared semaphore implementation on the host operating system. Without one, the multiprocessing.synchronize module will be disabled, and attempts to import it will result in an ImportError. See issue 3770 for additional information.

This may or may not be related, since it talks about multiprocessing.synchronize, but from what I understand, some implementations on some platforms just don't implement the semaphore API python relies upon here, which might be your problem.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!