Курс 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"

  1. Проверка на истинность объектов в Python
  2. Возврат нескольких значений
  3. Пропуск начальных строк с помощью dropwhile()
  4. Ошибка NotImplemented в Python
  5. Работа с индексами списков
  6. Склеивание строк без циклов
  7. Работа с комбинациями в Python.
  8. Замена атрибута в именованном кортеже
  9. Округление дробей в Python
  10. Оператор in и not in в Python
  11. Автоматизация действий с Pyautogui
  12. Избегайте изменяемых аргументов
  13. Удаление специальных символов
  14. Логирование с Logzero
  15. Сортировка в Python
  16. Создание класса очереди
  17. Транспонирование 2D-массива с помощью zip
  18. capitalize() — изменение регистра первого символа строки
  19. Особенности ключей словаря в Python
  20. Работа с кортежами в Python
  21. Функция enumerate() в Python
  22. Работа с enumerate()
  23. Блок else в обработке исключений
  24. Отправка HTTP-запросов в Python
  25. Оптимизация памяти с slots
  26. Порядок и длина множеств в Python
  27. Подсчет количества элементов в списке
  28. Преобразование данных в Python
  29. Освобождение памяти в Python
  30. Асинхронное программирование с asyncio
  31. Создание и инициализация объектов
  32. Работа с пакетами
  33. Создание словаря в Python
  34. Преобразование текста в речь с Python
  35. Открытие и редактирование скриптов Python
  36. Оператор «or» в Python
  37. Проверка ввода с помощью isdigit
  38. Проверка памяти объекта
  39. Сортировка списка по индексам
  40. Распаковка аргументов в Python
  41. Создание списков в Python
  42. Очистка данных с Pandas
  43. Python 3.12: Псевдонимы типов
  44. Анализ текста на русском языке с помощью Pymystem3
  45. Оформление текста в консоли с TermColor
  46. Оболочка Python

Marketello читают маркетологи из крутых компаний