- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
查询:Python 有没有办法说:
不要使用 /dev/shm
进行共享内存存储,而应使用其他临时位置,例如 /tmp
。 或
使用 threading.Lock
代替 multiprocessing.SemLock
进行同步(如果可行且不合逻辑的话)。
背景:
我正在 ESX(虚拟机管理程序)上运行一个简单的 multiprocessing.Pool
示例,该示例运行到 OSError : Function not implemented error .
StackOverflow 上对此问题的其他提及( here 和 here )指出,当 /dev/shm
未安装时会发生这种情况。因此,_multiprocessing.SemLock
无法创建同步锁。
这对我来说实际上是这样,因为 ls -lrt/dev/shm
对我来说失败了。但是我无法尝试上述链接中推荐的解决方案
mount
因为 mount 命令未在我运行的平台 (ESX/VMKernel) 上实现。
VM 不是持久性的,/etc/fstab
在关闭时会被冲走。
所以我正在寻找使用 threading.Lock() 进行同步或要求 Python 不要使用 /dev/shm/
进行同步的方法。
最佳答案
如果您尝试在两个多处理
进程中使用threading.Lock
对象,这两个Lock
对象将不会被链接。 threading.Lock
依赖于 2 个 Thread
将在同一内核上运行并共享文件描述符和 GIL 的事实。 2 Process
的情况并非如此。
模块_multiprocessing.semaphore
依赖操作系统pthread.sem_open
来创建SemLock
对象。这意味着主要问题是:ESX 上是否实现了一些操作系统信号量?如果有,您可以使用 ctypes
和来自 loky.backend.semlock 的灵感来实现您自己的 SemLock
对象。 ,它允许您访问内部 pthread
原语。
请注意,可能需要大量工作才能确保 SemLock 与 multiprocessing
模块正确使用。解决方案可能是使用 loky
的修改版本,如果您在 ESX 上成功实现它,则使用此 SemLock
。
关于python - 如何在 Python 中配置 `/dev/shm/` 或 `_multiprocessing.SemLock` 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42206381/
我有一个使用 multiprocessing 的短代码打包并在我的本地机器上正常工作。 当我上传到 AWS Lambda并在那里运行,我收到以下错误(已修剪堆栈跟踪): [Errno 38] Func
我的环境 python 2.7.3 Ubuntu 14.04 我使用的源代码:CPython on GitHub 了解我的问题的更多背景信息 据我了解,Modules/_multiprocessing
查询:Python 有没有办法说: 不要使用 /dev/shm 进行共享内存存储,而应使用其他临时位置,例如 /tmp。 或 使用 threading.Lock 代替 multiprocessing.
我是一名优秀的程序员,十分优秀!