Курс 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"
- Оптимизация создания строк
- Получение списка кортежей из словаря
- Метод Self в Python
- Перетасовка списков в Python
- Создание функций с произвольным количеством аргументов
- Обработка данных в Python
- Многострочные комментарии в Python
- kwargs в Python
- Python Поверхностное Копирование
- Принципы LSP и ISP в Python
- Работа с CSV файлами
- Создание новых списков в Python
- Оператор is в Python
- Генерация QR-кодов с Python
- Заказ карты Тинькофф Black
- Создание вложенного генератора
- Вычисление разности множеств в Python
- Вставка переменных в шаблоны Flask
- Подписка на каналы разработчиков
- Применение функции к каждому элементу списка
- Профилирование кода
- Отладчик pdb: начало работы
- Списки: объединение, изменение
- Импорт в Python: список all
- Создание комплексных чисел
- Выражения-генераторы в Python
- Создание коллекций из генератора
- Метод get() для словарей
- Функции any() и all() в Python
- Мониторинг памяти с Pympler
- Парсинг веб-страниц с Beautiful Soup
- Параллельные вычисления в Python
- Списки в Python: синтаксис представления
- Модуль Antigravity в Python 3
- Отделение звука от видео
- Генераторы в Python
- Фильтрация входных данных в Python
- Метод rpow в Python
- CLI-инструмент howdoi
- Структуры данных в Python
- Открытие и запись файлов
- Оператор assert в Python
- Метод rsub для пользовательских чисел
- Создание веб-приложения с Flask
- Возвращение нескольких значений через кортеж или класс















