我在MacOS上的Python进程完全忽略了我设置的rlimit。
(我用印刷体确认它们已经被设置好)
物理内存使用率超过2.4Gb,此时CPU使用率下降<(潜在的罪魁祸首似乎是numpy数组分配,但我无法强制OutOfMemory异常确定位置,所以我陷入了困境)。发生什么事?我以为刻薄是不可忽视的?
编辑:我突然想到,这个有问题的分配不是在原生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的物理内存。

最佳答案

我突然意识到,违规的分配不是在本机Python中完成的,而是在numpy或scikit-learn中完成的。
我的分配代码可能正在向临时用户泄漏内存。会调查的。可能需要查看gc
如果是这样的话,听起来就像resource上的docbug。
链接到source of cpython:Modules/resource.c

关于python - MacOS上的Python完全忽略了rlimit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15633474/

10-09 05:45