Курс 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. Python Translator: создание локальных переводчиков
  3. Генерация QR-кодов с библиотекой qrcode
  4. Хранение данных
  5. Создание словарей с defaultdict
  6. Работа с комбинациями в Python.
  7. Метод get() в Python
  8. Переопределение оператора % для объектов
  9. Поиск повторов в списке
  10. Функция product() из itertools
  11. Работа с путями в Python
  12. Генераторы данных
  13. Доступ к локальным переменным
  14. Получение обратного списка чисел
  15. Измерение времени выполнения кода
  16. Отладка утечек памяти в Python
  17. Подсчет часто встречающихся элементов
  18. Сортировка с параметром key
  19. Хеширование паролей с солью
  20. Создание виртуальной среды
  21. Установка и использование TensorFlow
  22. Отправка POST запроса на сервер.
  23. Создание множества в Python
  24. Сравнение строк в Python
  25. Безопасный доступ к значениям словаря
  26. Удаление ссылок в Python
  27. Переворот списка в Python
  28. Переименование файлов в Python
  29. Сортировка в Python
  30. Объединение списков в Python
  31. Создание класса очереди
  32. Получение атрибутов и методов класса
  33. Распаковка элементов массива
  34. Метод __irshift__ для Python
  35. Функция rsplit() в Python
  36. Объединение списков с использованием itertools.chain
  37. Импорт модулей в Python 3.12
  38. Метод rpow в Python
  39. Оформление кода по PEP 8
  40. Работа с каталогами в Python
  41. Хэш-функции в Python
  42. Параллельные вычисления в Python
  43. Передача параметров в Python
  44. Работа с контекстными переменными
  45. Библиотека schedule: планировщик задач
  46. Возведение в квадрат с помощью itertools
  47. Обмен значений переменных в Python
  48. Функция с **kwargs в Python
  49. Подсчет элементов в Python

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