Курс 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. Оператор is в Python
  2. Метод rename() для переименования файлов и каталогов
  3. Работа с NumPy
  4. Поиск индекса элемента
  5. JMESPath в Python
  6. Создание списков в Python
  7. Форматирование строк с % в Python
  8. Безопасный доступ к значениям словаря
  9. Преобразование строк в числа с плавающей запятой
  10. Работа с PosixPath() в Python
  11. Работа с классами данных
  12. Использование функции enumerate()
  13. Модуль Operator в Python
  14. Нахождение максимального значения и его индекса в списке
  15. Списковый компрехеншен.
  16. Генераторы списков в Python
  17. Создание и обучение модели с Keras
  18. Многопоточность в Python
  19. Инверсия списка и строки
  20. Отрицательные индексы списков
  21. Разработка Telegram-ботов
  22. Обмен значений переменных в Python
  23. Получение ID текущего процесса
  24. Проверка типов с помощью isinstance
  25. Принципы программирования
  26. Создание спинбокса в tkinter
  27. Переопределение метода __rshift__
  28. Эффективная конкатенация строк с использованием join()
  29. Подчеркивание в REPL
  30. Нарезка списков в Python
  31. Транспонирование матрицы
  32. Метод count() для списков
  33. Объединение Python и Shell
  34. Отладка утечек памяти в Python
  35. Переопределение оператора % для объектов
  36. Навыки Python: строки, типы данных
  37. Значения по умолчанию в Python
  38. Установка и использование pyshorteners
  39. Функция format() в Python
  40. Удаление элементов из списка в Python
  41. Утечки переменных цикла в Python 3.x
  42. Генерация случайных чисел в Python
  43. Отслеживание выполнения программы с библиотекой tqdm
  44. Модуль xkcd: добавление юмора в Python
  45. Роль запятой в Python
  46. Печать списка с помощью метода join
  47. Удаление дубликатов из списка с помощью dict.fromkeys
  48. Создание пользовательской коллекции в Python

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