Курс 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. Подписка на SelectelNews в Twitter
  3. Python itertools combinations() — группировка элементов
  4. Оформление кода на Python
  5. Область видимости переменных
  6. Декораторы классов
  7. Получение обратного списка чисел
  8. Экспорт внешнего файла с помощью writefile
  9. Метод index() в Python
  10. Чтение бинарного файла в Python.
  11. Сглаживание списка
  12. Вложенные циклы в Python
  13. Итераторы в Python
  14. Обработка исключений в Python
  15. Создание Telegram-бота на Python
  16. Форматирование строк в Python
  17. Numpy: разбиение массивов
  18. Стать Python-разработчиком
  19. Управление асинхронными задачами на Python.
  20. Возвращение нескольких значений
  21. Преобразование вложенного списка
  22. Получение идентификатора объекта в памяти
  23. Создание даты из строки ISO
  24. Удаление символа из строки
  25. Создание GUI с Tkinter: Entry
  26. Numpy: использование Ellipsis
  27. Проверка условий: all и any
  28. Solidity для DeFi Ethereum
  29. Многострочные комментарии в Python
  30. Преобразование числа в восьмеричную строку
  31. Функции map() и reduce() в Python
  32. Множества и frozenset
  33. Работа с библиотекой xkcd
  34. Поиск повторов в списке
  35. Создание и использование модулей в Python
  36. Передача словаря через **kwargs
  37. Работа с часовыми поясами в Python.
  38. Возврат нескольких значений
  39. Очистка входных данных
  40. Тест скорости набора текста на Python
  41. Создание списков в Python
  42. Шаблоны Flask: условия и циклы
  43. Пропуск строк в файле с itertools
  44. enumerate() в Python для работы с индексами
  45. Векторизация в Python с NumPy.
  46. Работа с модулем random
  47. Создание вложенного генератора

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