Курс 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"
- Избегайте пустого списка
- Пересечение списков с использованием множеств
- Модуль subprocess: запуск внешних команд
- Python: Фильтрация списков с помощью filter()
- Генерация ключей RSA
- Модуль xkcd: добавление юмора в Python
- Списки в Python: синтаксис представления
- Генерация случайных чисел в Python
- Numpy: разбиение массивов
- Big O оптимизация
- Поиск с библиотекой Google
- Делегирование в Python
- Оценка выражений генератора в Python
- Генерация фальшивых данных с Faker
- UserList в Python: Описание и примеры использования
- Условные выражения в Python
- Конкатенация строк с методом join()
- Получение пути к текущему скрипту с помощью os
- Списки в Python: основы
- Генераторы в Python
- Создание матрицы в Python
- Инициализация объекта
- Поиск самого частого элемента
- Работа с кортежами в Python
- Функции map, filter, reduce
- Работа с URL-адресами в Python
- Удаление и повторная вставка ключа в OrderedDict
- Создание списков в Python
- Вычисление логарифмов в Python
- Основные методы NumPy
- Удаление URL-адресов в Python
- Пропуск начальных строк с помощью dropwhile()
- Переворот строки
- Создание класса в Python
- Возврат нескольких значений
- Работа с итераторами в Python
- Приближение чисел в Python
- Обход дочерних элементов BeautifulSoup
- Обрезка изображения с Pillow
- Преобразование регистра символов
- Удаление дубликатов из списка с помощью dict.fromkeys
- Подсчет часто встречающихся элементов
- Оператор @ для умножения матриц
- Делегирование в Python
- Преобразование символов в нижний регистр
- F-строки в Python
- Оценка точности модели















