Как лучше всего установить ограничения на неизвестный код?

Я использую библиотеку Python ( SimpleParse), которая, как мне кажется, вызывает некоторую убегающую рекурсию. Он уже сломал мой компьютер однажды, когда я просто пытался его отладить.

Что было бы для меня лучшим способом установить ограничения на объем используемой памяти?

Я думал, что напишу быструю C-программу с setrlimit для вызова Python и протестировал ее оттуда.

2 ответа

Решение

Python предоставляетsetrlimit()так что вы можете остаться в Python. (Если вы не счастливее в C:)

Обратите внимание, что ядро ​​Linux долгое время не поддерживало учет RSS; учет адресного пространства - это, вероятно, ваш лучший выбор, но он может быть слишком ограничительным. (Если программа mmap(2)Несколько гигабайт, но никогда не беспокоят чтение или запись, это не имеет большого значения; ограничения могут запретить mmap(2), а не запрещать на самом деле использование памяти.)

Установка предела рекурсии здесь вряд ли является разумным решением. Если в библиотеке есть ошибка, пожалуйста, сообщите или исправьте ее. Если в вашем коде есть ошибка, пожалуйста, исправьте ее. SimpleParse широко не используется... вы можете посмотреть другие параметры парсера. Поскольку вы не объяснили, в чем заключается ваша настоящая проблема в том, что вы пытаетесь ее решить, мы мало что можем дать по альтернативным инструментам.

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