Курс 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
- Оператор continue в Python
- Измерение времени выполнения с помощью time
- Работа с базами данных SQLite
- Выход из профиля в Django
- Декоратор защиты анонимных пользователей
- Блок try-except-else
- Транспонирование матрицы
- Создание генераторов
- Форматирование данных с помощью pprint
- Функции с дополнением
- Удаление URL-адресов в Python
- Работа с collections в Python.
- Особенности множеств в Python
- Модуль pprint
- Переменные в Python
- Нахождение пересечения множеств
- Тест скорости набора текста на Python
- Метод сравнения объектов в Python
- TypedDict для kwargs в Python 3.12
- Оператор «or» в Python
- Получение обратного списка чисел
- Преобразование Excel в PDF с Spire.XLS
- Генерация случайных чисел в Python
- Перехват исключений в Python
- Добавление элемента к кортежу
- Разделение строк в Python
- GitHub в Telegram: подписка на уведомления
- Удаление эмодзи с помощью pandas
- Функции range() в Python
- Работа с файловой системой в Python
- Библиотека Rich: форматирование текста
- Управление сессиями в Python
- Преобразование символов с помощью map
- Удаление дубликатов из списка с помощью dict.fromkeys
- SciPy: широкий функционал для математических операций
- Howdoi — получение ответов из терминала
- Создание новых списков через list comprehensions
- Генераторы списков
- PEP-401: оператор
- CLI-инструмент howdoi
- Метод hash в Python
- Преобразование букв в нижний регистр
- Преобразование типов данных в set comprehension
- Метод сравнения объектов в Python















