Курс 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
- Компиляция регулярных выражений
- Создание списков в Python
- Метод title() в Python
- Использование метода lower()
- Генератор чисел Фибоначчи
- Множественное наследование в Python
- Создание .exe файла с pyinstaller
- Удаление дубликатов в pandas
- Конкатенация строковых литералов
- Запуск внешних программ с subprocess
- Python Тесты и Гайды
- Изменяемые и неизменяемые объекты
- Изучение объектов с помощью dir()
- Генераторные функции в Python
- Переопределение метода __or__()
- Транспонирование матрицы в Python
- Подписка на SelectelNews в Twitter
- Оператор += для объединения строк
- Поиск подстроки в строке
- Применение функции к элементам списка
- Операторы увеличения и уменьшения переменной
- Сложение матриц в NumPy
- Конкатенация списков в Python
- Добавление элемента к кортежу
- Добавление элемента в список.
- Работа с очередями в Python
- Сериализация объектов в Python
- Операторы += в Python
- Ошибка NotImplemented в Python
- Создание списка через итерацию
- Работа с типами данных в Python с помощью pydantic.
- Сортировка слиянием
- Переопределение унарных операторов
- Объединение списков в Python
- Удаление элементов из списка в Python.
- Работа со временем в Python
- Python Enum Weekday Usage
- Замена подстроки
- Срез в Python
- Модуль pprint: улучшение вывода данных
- Подсчет элементов с помощью Counter из collections
- Запуск внешнего кода в Jupyter
- Генерация QR-кодов с Python
- Работа с JSON данными в Python















