Курс Python → Ограничение ресурсов в Python
Для ограничения использования процессора и памяти в Python можно воспользоваться модулем resource. Для начала необходимо получить значения нежёсткого и жёсткого лимитов для конкретного ресурса (например, RLIMIT_CPU для ограничения использования процессора). Для этого можно воспользоваться функцией getrlimit, которая принимает в качестве аргумента константу, определяющую ресурс.
import resource
import signal
# Получаем значения нежёсткого и жёсткого лимитов для RLIMIT_CPU
soft_limit, hard_limit = resource.getrlimit(resource.RLIMIT_CPU)
Затем необходимо установить лимит, используя некоторое число секунд (или другую единицу измерения времени) в качестве аргумента. Для этого можно воспользоваться функцией setrlimit, передав ей новое значение нежёсткого лимита и ранее полученное значение жёсткого лимита.
# Устанавливаем лимит использования процессора в 5 секунд
resource.setrlimit(resource.RLIMIT_CPU, (5, hard_limit))
Далее необходимо зарегистрировать обработчик сигнала, который будет инициировать процедуру выхода из программы при превышении установленного лимита. Для этого можно воспользоваться модулем signal и функцией signal.signal, указав соответствующий сигнал (например, signal.SIGXCPU для превышения времени процессора).
# Регистрируем обработчик сигнала SIGXCPU
def signal_handler(signum, frame):
print("Превышено время использования процессора")
exit()
signal.signal(signal.SIGXCPU, signal_handler)
Для ограничения использования памяти можно также использовать модуль resource. После получения значений нежёсткого и жёсткого лимитов для нужного ресурса (например, RLIMIT_AS для ограничения использования памяти), необходимо установить ограничение с помощью функции setrlimit, передав размер ограничения и значение жёсткого лимита.
# Получаем значения нежёсткого и жёсткого лимитов для RLIMIT_AS
soft_limit, hard_limit = resource.getrlimit(resource.RLIMIT_AS)
# Устанавливаем лимит использования памяти в 100 МБ
resource.setrlimit(resource.RLIMIT_AS, (100 * 1024 * 1024, hard_limit))
Другие уроки курса "Python"
- Проверка на истинность объектов в Python
- Возврат нескольких значений
- Пропуск начальных строк с помощью dropwhile()
- Ошибка NotImplemented в Python
- Работа с индексами списков
- Склеивание строк без циклов
- Работа с комбинациями в Python.
- Замена атрибута в именованном кортеже
- Округление дробей в Python
- Оператор in и not in в Python
- Автоматизация действий с Pyautogui
- Избегайте изменяемых аргументов
- Удаление специальных символов
- Логирование с Logzero
- Сортировка в Python
- Создание класса очереди
- Транспонирование 2D-массива с помощью zip
- capitalize() — изменение регистра первого символа строки
- Особенности ключей словаря в Python
- Работа с кортежами в Python
- Функция enumerate() в Python
- Работа с enumerate()
- Блок else в обработке исключений
- Отправка HTTP-запросов в Python
- Оптимизация памяти с slots
- Порядок и длина множеств в Python
- Подсчет количества элементов в списке
- Преобразование данных в Python
- Освобождение памяти в Python
- Асинхронное программирование с asyncio
- Создание и инициализация объектов
- Работа с пакетами
- Создание словаря в Python
- Преобразование текста в речь с Python
- Открытие и редактирование скриптов Python
- Оператор «or» в Python
- Проверка ввода с помощью isdigit
- Проверка памяти объекта
- Сортировка списка по индексам
- Распаковка аргументов в Python
- Создание списков в Python
- Очистка данных с Pandas
- Python 3.12: Псевдонимы типов
- Анализ текста на русском языке с помощью Pymystem3
- Оформление текста в консоли с TermColor
- Оболочка Python















