Курс 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
- Подписка на SelectelNews в Twitter
- Python itertools combinations() — группировка элементов
- Оформление кода на Python
- Область видимости переменных
- Декораторы классов
- Получение обратного списка чисел
- Экспорт внешнего файла с помощью writefile
- Метод index() в Python
- Чтение бинарного файла в Python.
- Сглаживание списка
- Вложенные циклы в Python
- Итераторы в Python
- Обработка исключений в Python
- Создание Telegram-бота на Python
- Форматирование строк в Python
- Numpy: разбиение массивов
- Стать Python-разработчиком
- Управление асинхронными задачами на Python.
- Возвращение нескольких значений
- Преобразование вложенного списка
- Получение идентификатора объекта в памяти
- Создание даты из строки ISO
- Удаление символа из строки
- Создание GUI с Tkinter: Entry
- Numpy: использование Ellipsis
- Проверка условий: all и any
- Solidity для DeFi Ethereum
- Многострочные комментарии в Python
- Преобразование числа в восьмеричную строку
- Функции map() и reduce() в Python
- Множества и frozenset
- Работа с библиотекой xkcd
- Поиск повторов в списке
- Создание и использование модулей в Python
- Передача словаря через **kwargs
- Работа с часовыми поясами в Python.
- Возврат нескольких значений
- Очистка входных данных
- Тест скорости набора текста на Python
- Создание списков в Python
- Шаблоны Flask: условия и циклы
- Пропуск строк в файле с itertools
- enumerate() в Python для работы с индексами
- Векторизация в Python с NumPy.
- Работа с модулем random
- Создание вложенного генератора















