Курс 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. Применение функции к каждому элементу списка
  2. Создание словаря и множества
  3. Перегрузка операторов в Python
  4. Функция pow() — возвести число в степень
  5. Генератор списка с условием if
  6. Библиотека schedule: планировщик задач
  7. Частичное совпадение ввода
  8. Установка Git и AWS CLI
  9. Оператор zip в Python
  10. Хэш-функции и метод цепочек
  11. Работа с модулем random
  12. Декоратор защиты анонимных пользователей
  13. Объединение словарей в Python
  14. Генераторы в Python
  15. Декораторы для регистрации функций
  16. Повторение элементов списков
  17. Явный импорт переменных
  18. Списки в Python: основы
  19. Работа с датами в Python
  20. Запуск Python из интерпретатора
  21. Работа с изображениями PIL
  22. Проверка строки на палиндром
  23. Метод Enumerate() для списков
  24. Транспонирование 2D-массива с помощью zip
  25. Визуализация пропусков данных
  26. Условные выражения в Python
  27. Работа с deque из collections
  28. Python Поверхностное Копирование
  29. Retrying в Python: повторные вызовы
  30. Проверка на истинность объектов в Python
  31. Блок else в циклах Python
  32. Использование эмодзи в Python
  33. Форматирование строк в Python
  34. Работа с файлами в Python
  35. Работа с CSV файлами в Python
  36. Ограничение ресурсов в Python
  37. Извлечение новостей с newspaper3k
  38. Сортировка HTML-элементов
  39. Метод count в Python: почему count(», ») возвращает 4?
  40. Python Аргументы по умолчанию
  41. Логирование в Python
  42. Сериализация объектов в Python
  43. ChainMap.new_child() — добавление нового словаря
  44. Обработка исключений
  45. Lambda Functions in Python

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