我遇到以下错误:

$ 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的读/写访问权限之外)?

谢谢!

#1楼 票数:19

对于来自Google的其他人,答案是Django Celery实施-OSError errno 38-未实现的功能

通过不添加none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0/etc/fstab并重新启动来使其工作

sudo mount /dev/shm可以重新启动,而不是重新启动。

#2楼 票数:5

我怀疑这必须与此有关: http : //bugs.python.org/issue3770

从Python文档中:

警告 :此软件包的某些功能需要在主机操作系统上正常运行共享信号灯实现。 没有一个, multiprocessing.synchronize模块将被禁用,尝试导入它会导致ImportError。 有关更多信息,请参见问题3770。

这可能相关,也可能无关,因为它谈论的是multiprocessing.synchronize ,但是据我了解,某些平台上的某些实现只是不实现python依赖的信号量API,这可能是您的问题。

  ask by xyz-123 translate from so

未解决问题?本站智能推荐:

1回复

Python3.4:OSError:[Errno 12]无法分配内存

我正在文件dijk_inner_mp.py中初始化一堆长度为1048576 x 16的多处理数组: 初始化之后,我创建了P1个在分配的阵列上工作的进程。 但是,我在执行时总是遇到此错误: 在看到有关此问题的其他问题后,我尝试将交换文件的大小增加到几GB,但这似乎没有帮助。 我
1回复

中间有Python多处理模块

我在CentOS VPS服务器上运行python程序。 我过去几个月一直在运行该程序,并且从一开始就面临着这个问题。 我通常从crontab运行此python程序。 该程序每天按顺序执行以下操作。 连接到MySQL数据库并更新一些特定信息。 使用multiproces
1回复

Python多处理linux windows的区别

这段代码在linux上执行,但抛出了一个AttributeError:类型对象'T'在windows上没有属性'val',为什么?
1回复

如何终止Python多处理作业?

在我提到的这个问题中 ,我可以使用多处理成功运行作业,我可以看到所有处理器都在使用中。 我该如何解雇这份工作? 从终端我运行: 然后我Ctrl+C来杀死。 然而,这项工作似乎没有被杀死,我可以看到所有的处理器仍在使用中。 我正在运行Red Hat Enterprise Lin
3回复

防止多处理“失控的错误”

如果您使用多处理并无意间无限制地创建了进程 ,则操作系统将不会喜欢它。 是否有任何简单的解决方案可以防止这种情况发生(例如,通过限制进程总数(在Python或OS中))? 我使用Windows,当我犯这样的错误时,它的表现确实很差(需要硬重启)。 因此,如果有一些代码可以包装/添加
4回复

杀死Python多处理池

我正在运行一个Python程序,它使用多处理模块来生成一些工作线程。 使用Pool.map这些消化文件列表。 在某些时候,我想停止一切并让脚本死掉。 通常,命令行中的Ctrl+C可以完成此操作。 但是,在这种情况下,我认为只是打断了一个工人,并产生了一个新的工人。 所以,我
2回复

Python线程和多处理错误?

是threading.Timer和multiprocessing.Process产生另一个独立于其他主题或进程的进程吗? 示例我的代码如下所示,假设它进行了一轮if语句,使其执行multiprocessing.Process和threading.Timer ,现在是20secs,所以它仍然等待
3回复

Python多处理:优雅地杀死进程

是否 优雅地杀死一系列进程? 如果不是最简单的方法是什么? 目标是将配置文件重新加载到内存中,所以我想杀死所有子进程并创建其他进程,后者将读取新的配置文件。 编辑 :添加了更多代码来解释我正在运行一段while True循环 编辑 :这是@dano 建议之后的新代