Курс 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. Numpy: объединение массивов
  3. Установка и использование библиотеки google
  4. Взаимодействие с внешними процессами в Python
  5. Изменяемые и неизменяемые объекты
  6. Настройка вывода NumPy
  7. Управление IP-адресами через прокси
  8. Обработка ошибок в JSON данных
  9. Сравнение строк в Python
  10. Проверка переменных окружения в Python
  11. Управление пакетами с pip
  12. Работа с CSV файлами
  13. Преобразование строк в числа в Python
  14. Python Метод del.
  15. Генераторы в Python
  16. Модуль subprocess: запуск внешних команд
  17. Преобразование кортежа в словарь.
  18. Генераторы в Python
  19. Оператор += для объединения строк
  20. Управление мышью и клавиатурой с Pyautogui
  21. Имена объектов в Python
  22. Эффективная конкатенация строк в Python
  23. Функция format() в Python
  24. Равенство и идентичность в Python
  25. Функция enumerate() в Python
  26. Потоковый ввод в Python
  27. Определение объема памяти объекта
  28. Python Enum Weekday Usage
  29. Преобразование списка в словарь через генератор
  30. Извлечение аудио из видео
  31. Отладка в командной строке
  32. Генераторы в Python
  33. Установка библиотек в Python
  34. Лямбда-функции в defaultdict
  35. Применение функции map() в Python
  36. Реализация метода __abs__ в Python
  37. Автоматизация действий с Pyautogui
  38. Структура строк в Python
  39. Объединение, распаковка и деструктуризация
  40. Проверка файла .py на синтаксис.
  41. Реверс строки в Python
  42. Библиотека wikipedia для Python
  43. Создание панели меню Tkinter
  44. Обработка ошибки IndexError
  45. Метод matmul для умножения матриц
  46. Необязательные аргументы в Python
  47. Установка и использование Python-dateutil

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