我在 MacOS 上的 Python 进程完全忽略了我设置的 rlimits。 (我通过打印确认它们已被设置)
物理内存使用量超过 2.4Gb,此时 CPU 使用率下降 << 5% 并挂起。
(潜在的罪魁祸首似乎是 numpy 数组分配,但我无法强制 OutOfMemory
异常来查明位置,所以我被卡住了)。这是怎么回事?我以为不能忽略硬限制?
编辑:我突然想到,有问题的分配不是在原生 Python 中完成的,而是在 numpy 或 scikit-learn 中完成的。 .链接到 source of cpython:Modules/resource.c如果是这样,那将是一个明确的文档错误。
import resource
resource.setrlimit(resource.RLIMIT_AS, (1*1048576L, 1.2*1048576L))
resource.setrlimit(resource.RLIMIT_DATA, (1*1048576L, 1.1*1048576L))
resource.setrlimit(resource.RLIMIT_STACK, (100000, 120000))
版本:macOS 10.8.2 上的 python2.7.3(macports,64b),py27-numpy。
机器有 4Gb 物理内存。
最佳答案
根据 Chromium issue #853873 , macOS 不(至少在 2018 年中期) 尊重 RLIMIT_DATA
或 RLIMIT_AS
。
关于MacOS 上的 Python 完全忽略 rlimit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15633474/