Курс 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"
- Использование функции enumerate()
- capitalize() — изменение регистра первого символа строки
- Срезы в Numpy
- Избегание изменяемых аргументов
- Функции any() и all() в Python
- Метод __ilshift__ для битового сдвига влево
- Метод __getitem__ в Python
- Отображение HTML кода в Python
- Проверка существования переменной с оператором :=
- Сортировка данных с лямбда-функциями
- Объединение списков с помощью zip
- Метод title() в Python
- Функция __init__ в Python
- Установка random seed в Python
- Метод append() для списка
- Работа с deque из collections
- Печать месячного календаря
- Python Calendar Usage
- Python 3.12: Псевдонимы типов
- Форматирование чисел в Python
- Работа с очередями в Python
- Модуль functools в Python
- Присвоение и ссылки
- Управление IP-адресами через прокси
- Получение текущего времени в Python
- Работа с контекстными менеджерами
- Локальные переменные.
- Pretty-printing JSON в Python
- Объявление переменных в Python
- Установка User-Agent в Python
- Удаление символов новой строки в Python.
- Lambda Functions in Python
- Возврат значений из генератора
- Синхронизация доступа к ресурсам
- Метод get() для словарей
- Работа с кортежами в Python
- Работа с комплексными числами
- Подсчет частоты элементов с Counter
- Обход дочерних элементов BeautifulSoup
- Генерация случайных чисел в Python
- Работа с Requests для HTTP-запросов
- Обрезка изображения с Pillow
- Создание класса в Python
- Константы в модуле cmath
- Оператор walrus в Python
- Python: библиотеки и функции
- Разработка Telegram-ботов















