Sobes.tech
Middle

Mi az a kontextuskezelő?

sobes.tech MI

Válasz az MI-től

A Pythonban a kontextuskezelő egy olyan objektum, amely meghatározza a végrehajtási kontextust, és kezeli az erőforrások kiosztását és felszabadítását. Megvalósítja a kontextuskezelő protokollt, amely magában foglalja a __enter__ és __exit__ mágikus metódusokat.

  • __enter__: A kontextusba lépéskor hívódik meg, általában a kezelendő erőforrást adja vissza.
  • __exit__: A kontextusból való kilépéskor hívódik meg, még akkor is, ha kivétel történt. Feladata az erőforrás felszabadítása. Három argumentumot kap: a kivétel típusát, a kivétel objektumát és a veremnyomot (vagy None, ha nem volt kivétel).

Gyakran használják a with utasítással az erőforrások automatikus kezelésére, például fájlok, hálózati kapcsolatok vagy zárolások esetén.

# Példa egy fájllal való munkára szolgáló kontextuskezelő használatára
with open('myfile.txt', 'r') as f:
    content = f.read()
# A fájl automatikusan bezárul a with blokk elhagyása után

A kontextuskezelőket a protokoll megvalósításával vagy a @contextmanager dekorátor használatával lehet létrehozni a contextlib modulból.

# Példa egy kontextuskezelő létrehozására dekorátor segítségével
def timer():
    import time
    start_time = time.time()
    yield  # A kontextus belépési pontja
    end_time = time.time()
    print(f"Futási idő: {end_time - start_time:.2f} másodperc")

# A létrehozott kontextuskezelő használata
with timer():
    # A mérendő kód
    import time
    time.sleep(1)