Курс 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
- Функция pow() — возвести число в степень
- Генератор списка с условием if
- Библиотека schedule: планировщик задач
- Частичное совпадение ввода
- Установка Git и AWS CLI
- Оператор zip в Python
- Хэш-функции и метод цепочек
- Работа с модулем random
- Декоратор защиты анонимных пользователей
- Объединение словарей в Python
- Генераторы в Python
- Декораторы для регистрации функций
- Повторение элементов списков
- Явный импорт переменных
- Списки в Python: основы
- Работа с датами в Python
- Запуск Python из интерпретатора
- Работа с изображениями PIL
- Проверка строки на палиндром
- Метод Enumerate() для списков
- Транспонирование 2D-массива с помощью zip
- Визуализация пропусков данных
- Условные выражения в Python
- Работа с deque из collections
- Python Поверхностное Копирование
- Retrying в Python: повторные вызовы
- Проверка на истинность объектов в Python
- Блок else в циклах Python
- Использование эмодзи в Python
- Форматирование строк в Python
- Работа с файлами в Python
- Работа с CSV файлами в Python
- Ограничение ресурсов в Python
- Извлечение новостей с newspaper3k
- Сортировка HTML-элементов
- Метод count в Python: почему count(», ») возвращает 4?
- Python Аргументы по умолчанию
- Логирование в Python
- Сериализация объектов в Python
- ChainMap.new_child() — добавление нового словаря
- Обработка исключений
- Lambda Functions in Python















