Курс 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. Оператор continue в Python
  3. Измерение времени выполнения с помощью time
  4. Работа с базами данных SQLite
  5. Выход из профиля в Django
  6. Декоратор защиты анонимных пользователей
  7. Блок try-except-else
  8. Транспонирование матрицы
  9. Создание генераторов
  10. Форматирование данных с помощью pprint
  11. Функции с дополнением
  12. Удаление URL-адресов в Python
  13. Работа с collections в Python.
  14. Особенности множеств в Python
  15. Модуль pprint
  16. Переменные в Python
  17. Нахождение пересечения множеств
  18. Тест скорости набора текста на Python
  19. Метод сравнения объектов в Python
  20. TypedDict для kwargs в Python 3.12
  21. Оператор «or» в Python
  22. Получение обратного списка чисел
  23. Преобразование Excel в PDF с Spire.XLS
  24. Генерация случайных чисел в Python
  25. Перехват исключений в Python
  26. Добавление элемента к кортежу
  27. Разделение строк в Python
  28. GitHub в Telegram: подписка на уведомления
  29. Удаление эмодзи с помощью pandas
  30. Функции range() в Python
  31. Работа с файловой системой в Python
  32. Библиотека Rich: форматирование текста
  33. Управление сессиями в Python
  34. Преобразование символов с помощью map
  35. Удаление дубликатов из списка с помощью dict.fromkeys
  36. SciPy: широкий функционал для математических операций
  37. Howdoi — получение ответов из терминала
  38. Создание новых списков через list comprehensions
  39. Генераторы списков
  40. PEP-401: оператор
  41. CLI-инструмент howdoi
  42. Метод hash в Python
  43. Преобразование букв в нижний регистр
  44. Преобразование типов данных в set comprehension
  45. Метод сравнения объектов в Python

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