我在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。
答案 0 :(得分:0)
我觉得违规分配不是在原生Python中完成的,而是在numpy或scikit-learn中。 我的分配代码可能会泄露内存给临时工。将调查。可能需要查看gc。
如果是这种情况,那听起来像是resource上的一个docbug。