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 (vagyNone, 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)