MacOS上的Python完全忽略了rlimit

时间:2013-03-26 09:28:54

标签: python macos resources setrlimit

我在MacOS上的Python进程完全忽略了我设置的下限。 (我通过印刷证实它们已被设定)

物理内存使用量超过2.4Gb,此时CPU使用率下降<< 5%,它挂起。 (潜在的罪魁祸首似乎是numpy数组分配,但我不能强制OutOfMemory例外来确定位置,所以我被卡住了。发生了什么事?我认为艰难的rlimits不容忽视?

编辑:我发现违规分配不是在原生Python中完成的,而是在numpy或scikit-learn中。链接到source of 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))

版本:python2.7.3(macports,64b)在MacOS 10.8.2,py27-numpy上。

机器有4Gb物理RAM。

1 个答案:

答案 0 :(得分:0)

我觉得违规分配不是在原生Python中完成的,而是在numpy或scikit-learn中。 我的分配代码可能会泄露内存给临时工。将调查。可能需要查看gc

如果是这种情况,那听起来像是resource上的一个docbug。

链接到source of cpython:Modules/resource.c