我在 MacOS 上的 Python 进程完全忽略了我设置的 rlimits。(我通过打印确认它们已设置)
物理内存使用率超过 2.4Gb,此时 CPU 使用率下降 << 5% 并挂起。(潜在的罪魁祸首似乎是 numpy 数组分配,但我不能强制OutOfMemory
异常来查明在哪里,所以我被卡住了)。这是怎么回事?我认为硬 rlimits 不能被忽略?
编辑:在我看来,有问题的分配不是在本机 Python 中完成的,而是在 numpy 或scikit-learn中完成的。链接到cpython 的源代码:Modules/resource.c如果是这样,那将是一个明确的 docbug。
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 物理 RAM。