OSError 38 与多处理

我有以下错误:

$ 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)?

谢谢!

Solutions Collecting From Web of "OSError 38 与多处理"

对于来自Google的任何其他人,答案是在Django芹菜实施 – OSError errno 38 – 功能未实现 :

通过将none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0/etc/fstab并重新引导

sudo mount /dev/shm不用重新启动。

我怀疑这必须做些什么: http : //bugs.python.org/issue3770

从Python文档:

警告 :此包的某些功能需要在主机操作系统上运行共享信号量。 如果没有, multiprocessing.synchronize模块将被禁用,并尝试导入它将导致一个ImportError。 有关其他信息,请参阅问题3770。

这可能是也可能不是相关的,因为它谈论multiprocessing.synchronize ,但据我所知,在一些平台上的一些实现只是不实现信号量API Python依赖于这里,这可能是你的问题。