Курс 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. SciPy: широкий функционал для математических операций
  4. Запрос DELETE с библиотекой requests
  5. Область видимости переменных
  6. Руководство по библиотеке pydantic
  7. Область видимости переменных в Python
  8. Создание новых списков в Python
  9. Объединение списков в строку
  10. Управление пакетами с pip
  11. Форматирование строк с % в Python
  12. Генераторные функции в Python
  13. Функция enumerate() — Python
  14. Просмотр файла в Jupyter Noteboo
  15. Установка и использование emoji
  16. Перезагрузка оператора в Python
  17. Шаблоны Flask: условия и циклы
  18. Упрощение работы с JSON-данными в Python
  19. Сортировка в Python
  20. Преобразование многоуровневого словаря
  21. Преобразование числа в список цифр
  22. Получение ID процесса
  23. Отслеживание выполнения программы с библиотекой tqdm
  24. Изменение объектов в Python
  25. Форматирование данных с помощью pprint
  26. Разность множеств
  27. Подписка на @SelectelNews
  28. Поиск наиболее частого элемента в списке
  29. Новшества Flask 2.0
  30. Округление банкира в Python
  31. Взаимодействие с внешними процессами в Python
  32. Flask — веб-фреймворк Python
  33. Генераторы в Python
  34. Нан-рефлексивность в Python
  35. Работа с словарями в Python
  36. Логические операторы в Python
  37. Создание функций с произвольным количеством аргументов
  38. Создание словаря через dict comprehension
  39. Сортировка с параметром key
  40. Управление контекстом выполнения
  41. Комментарии в Python.
  42. Декораторы в Python
  43. Настройка шрифта и цвета в Tkinter
  44. Вычисление фазы комплексного числа
  45. Форматирование строк с помощью f-строк
  46. PEP-401: оператор
  47. Переопределение метода sub
  48. Вывод переменной и строки в Python

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