2013-03-26 2 views
3

Мой процесс Python на MacOS полностью игнорирует rlimits, ниже которого я устанавливаю. (Я подтвердил печать, что они были установлены)Python на MacOS полностью игнорирует rlimit

Использование физической памяти превышает 2,4 ГБ, после чего загрузка процессора падает < < 5% и он висит. (Основной виновник, по-видимому, представляет собой многоуровневое распределение массива, но я не могу заставить исключение OutOfMemory указать, где, так что я застрял). Что происходит? Я думал, что жесткие ограничения нельзя игнорировать?

EDIT: мне приходит в голову, что оскорбительное выделение не выполняется на родном Python, но либо в numpy, либо в scikit-learn. Ссылка на source of cpython:Modules/resource.c Если это так, это будет определенный докбуг.

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.

Машина имеет 4 ГБ физической памяти.

ответ

0

Мне кажется, что оскорбительное распределение не выполняется на родном Python, но либо в numpy, либо в scikit-learn. Мой код выделения может быть утечкой памяти во временные. Будет исследовать. Может потребоваться посмотреть на gc.

Если это так, это звучит как docbug на resource.

Ссылка на source of cpython:Modules/resource.c

Смежные вопросы