🖥 Управление ресурсами с помощью контекстных менеджеров



Контекстные менеджеры являются хорошим инструментом для управления файлами, сетевыми соединениями и другими объектами, мы разберем простейшие способы их использования.



1. Стандартный пример с with
: позволяет безопасно открыть и закрыть файл, даже если в блоке возникнет ошибка:

with open('file.txt', 'r') as file:

data = file.read()




2. Создание своего контекстного менеджера: определив enter и exit методы. Это полезно, например, для измерения времени выполнения:

class Timer:

def __enter__(self):

self.start = time.time()

def __exit__(self, exc_type, exc_value, traceback):

print(f"Время выполнения: {time.time() - self.start:.4f} сек")




3. Использование contextmanager: модуль contextlib позволяет создавать контекстные менеджеры проще, например, для работы с файлами:

@contextmanager

def open_file(path, mode):

file = open(path, mode)

try:

yield file

finally:

file.close()




👉 Python Ready | #техсобес