Курс 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
- Функция zip() — объединение последовательностей
- Принципы Zen Python
- Объединение списков в строку
- Транспонирование матрицы в Python
- Переворот списка в Python
- Лямбда-функции для min/max
- Ввод нескольких значений
- Удаление файлов с shutil.os.remove()
- Операторы Splat и splatty-splat
- Обход элементов в Python
- Введение в Python
- Команда %dhist — список посещенных каталогов
- Блок else в циклах Python
- Итераторы в Python
- Сравнение строк в Python
- Создание файла с проверкой ошибки
- Инвертирование словаря
- Вакансии в Nebius
- Обработка ошибок в Python
- Поиск индексов в списке
- Распаковка элементов последовательности
- Сортировка данных в Python
- Отправка поздравлений по дню рождения
- Оценка выражений генератора в Python
- Работа с NumPy
- Возведение в квадрат с помощью itertools
- Управление контекстом с помощью декоратора contextmanager
- JMESPath в Python
- Тип CodeType в Python.
- Генератор надежных паролей
- Работа с кортежами в Python
- Отправка POST-запроса в REST API
- Частичное совпадение ввода
- Работа с defaultdictами в Python
- Проверка условий в Python
- Печать в одной строке
- Работа с Telegram API на Python
- Подписка на каналы разработчиков
- Python и Монти Пайтон
- Progress с библиотекой tqdm
- Удаление эмодзи с помощью pandas
- Имена объектов в Python
- Проверка на палиндром
- Обучение модели с указанием эпох
- Основы Python за 14 дней















