2013-03-26 107 views
3

我在MacOS上的Python進程完全忽略了我設置的rlimits。 (我通過打印確認它們已被設置)MacOS上的Python完全忽略rlimit

物理內存使用率高於2.4Gb,此時CPU使用率下降5%並且掛起。 (潛在的罪魁禍首似乎是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)) 

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

機器有4Gb物理RAM。

回答

0

在我看來,違規分配不是在本地Python中完成的,而是在numpy或scikit-learn中。 我的分配代碼可能會將內存泄漏到臨時對象。將調查。可能需要看看gc

如果是這樣的話,那聽起來像是一個關於resource的docbug。

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