Python 带多处理的OSError 38[Errno 38]

Python 带多处理的OSError 38[Errno 38],python,linux,multiprocessing,Python,Linux,Multiprocessing,我有以下错误: $ 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 inf

我有以下错误:

$ 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
$sudo chmod a+rwxt/dev/shm/
$ls-ld/dev/shm/
DRWXRWT 2根根目录4096年2月4日06:56/dev/shm/
$python
Python 2.6.6(r266:842921010年12月26日22:31:48)
[GCC 4.4.5]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入多处理
>>>mp=多处理池(2)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
池中的文件“/usr/lib/python2.6/multiprocessing/_init__.py”,第227行
返回池(进程、初始值设定项、initargs)
文件“/usr/lib/python2.6/multiprocessing/pool.py”,第84行,在__
self.\u设置\u队列()
文件“/usr/lib/python2.6/multiprocessing/pool.py”,第131行,在设置队列中
self.\u inqueue=SimpleQueue()
文件“/usr/lib/python2.6/multiprocessing/queues.py”,第328行,在__
self.\u rlock=Lock()
文件“/usr/lib/python2.6/multiprocessing/synchronize.py”,第117行,在__
SemLock.\uuuuu init\uuuuu(self,信号量,1,1)
文件“/usr/lib/python2.6/multiprocessing/synchronize.py”,第49行,在__
sl=self.\u semlock=\u multiprocessing.semlock(种类、值、最大值)
OSError:[Errno 38]函数未实现
此错误的原因(除了对/dev/shm的读/写访问之外)还有什么


谢谢

我怀疑这与此有关:

从Python文档中:

警告:此软件包的某些功能需要在主机操作系统上实现功能正常的共享信号量。如果没有,将禁用
多处理.synchronize
模块,尝试导入该模块将导致导入错误。更多信息见第3770期。
这可能有关系,也可能没有关系,因为它谈论的是多处理。同步,但据我所知,一些平台上的一些实现没有实现python所依赖的信号量API,这可能是您的问题。

对于来自谷歌的其他人来说,答案是:

通过添加
none/dev/shm-tmpfs-rw、nosuid、nodev、noexec-0使其正常工作
0
/etc/fstab
并重新启动


没有重新启动,
sudo mount/dev/shm
可以工作。

您是否从源代码编译了此python?您是否检查了此相关问题:这似乎是debian amd64和ppc特有的bug…@Bobby这不是您所想的。阅读@xyz-123不太可能,我在arm9系统上遇到过这种情况:但这会导致导入错误,而不是操作错误?这可能不是导入错误,因为模块的其他部分可能是错误的use@ahojnnes例如我不太确定。查看C源代码,有几个地方可能会抛出操作错误。不管它们是否被抛出,但它们似乎基于操作系统错误值(例如errno或GetLastError())。我不能做sudo。还有别的选择吗?