Sobes.tech
Middle

Контекст менеджери эмне?

sobes.tech AI

AIден жооп

Python-деги контекст менеджери — бул атрибут, ал иштөө контекстин аныктайт жана ресурстарды бөлүштүрүү жана бошотуу иштерин башкарган объект. Ал __enter__ жана __exit__ деп аталган магиялык ыкмаларды камтыган контекст менеджери протоколун ишке ашырат.

  • __enter__: Контекстке кирүүдө чакырылат, адатта, башкарылуучу ресурсты кайтарат.
  • __exit__: Контексттен чыгууда чакырылат, даже если исключение произошло. Ал ресурсты бошотууга жооптуу. Үч аргументти кабыл алат: исключение түрү, исключение объектиси жана стек трассасы (же None, эгер исключение болбосо).

Көп учурда ал with оператору менен колдонулат, мисалы, файлдар, тармактык байланыштар же блокировкалар сыяктуу ресурстарды автоматтык башкаруу үчүн.

# Файл менен иштөө үчүн контекст менеджерин колдонуу мисалы
with open('myfile.txt', 'r') as f:
    content = f.read()
# Файл `with` блогунан чыккан соң автоматтык түрдө жабылат

Контекст менеджерлер протоколду ишке ашырып же @contextmanager декораторун колдонуп түзүлүшү мүмкүн contextlib модулунан.

# Декораторду колдонуп контекст менеджерин түзүү мисалы
def timer():
    import time
    start_time = time.time()
    yield  # Контекстке кирүү чекити
    end_time = time.time()
    print(f"Ишке ашуу убактысы: {end_time - start_time:.2f} секунд")

# Түзүлгөн контекст менеджерин колдонуу
with timer():
    # Өлчөө керек код
    import time
    time.sleep(1)