Python на MacOS полностью игнорирует rlimit

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

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

РЕДАКТИРОВАТЬ: мне приходит в голову, что оскорбительное распределение делается не на родном Python, а в NumPy или Scikit-Learn. Ссылка на источник 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.

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

2 ответа

Решение

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

Если это так, то это звучит как документальный жук на ресурсе.

Ссылка на источник cpython:Modules/resource.c

Согласно выпуску Chromium № 853873 , macOS не соблюдает (по крайней мере, в середине 2018 г.)RLIMIT_DATAилиRLIMIT_AS.

Другие вопросы по тегам