Курс 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
- Преобразование вложенного списка
- SciPy: широкий функционал для математических операций
- Запрос DELETE с библиотекой requests
- Область видимости переменных
- Руководство по библиотеке pydantic
- Область видимости переменных в Python
- Создание новых списков в Python
- Объединение списков в строку
- Управление пакетами с pip
- Форматирование строк с % в Python
- Генераторные функции в Python
- Функция enumerate() — Python
- Просмотр файла в Jupyter Noteboo
- Установка и использование emoji
- Перезагрузка оператора в Python
- Шаблоны Flask: условия и циклы
- Упрощение работы с JSON-данными в Python
- Сортировка в Python
- Преобразование многоуровневого словаря
- Преобразование числа в список цифр
- Получение ID процесса
- Отслеживание выполнения программы с библиотекой tqdm
- Изменение объектов в Python
- Форматирование данных с помощью pprint
- Разность множеств
- Подписка на @SelectelNews
- Поиск наиболее частого элемента в списке
- Новшества Flask 2.0
- Округление банкира в Python
- Взаимодействие с внешними процессами в Python
- Flask — веб-фреймворк Python
- Генераторы в Python
- Нан-рефлексивность в Python
- Работа с словарями в Python
- Логические операторы в Python
- Создание функций с произвольным количеством аргументов
- Создание словаря через dict comprehension
- Сортировка с параметром key
- Управление контекстом выполнения
- Комментарии в Python.
- Декораторы в Python
- Настройка шрифта и цвета в Tkinter
- Вычисление фазы комплексного числа
- Форматирование строк с помощью f-строк
- PEP-401: оператор
- Переопределение метода sub
- Вывод переменной и строки в Python















