Sobes.tech
Middle
179

Kas ir konteksta pārvaldnieks?

Atbilde no AI

sobes.tech AI

Python konteksta pārvaldnieks ir objekts, kas definē izpildes kontekstu, pārvaldot resursu piešķiršanu un atbrīvošanu. Tas īsteno konteksta pārvaldnieka protokolu, kas ietver burvju metodes __enter__ un __exit__.

  • __enter__: tiek izsaukts, ieejot kontekstā, parasti atgriežot pārvaldāmo resursu.
  • __exit__: tiek izsaukts, iznākot no konteksta, pat ja ir notikusi izņēmuma situācija. Atbild par resursa atbrīvošanu. Saņem trīs argumentus: izņēmuma tipu, izņēmuma objektu un steka izsekošanu (vai None, ja izņēmuma nav).

Bieži tiek izmantots ar with operatoru, lai automātiski pārvaldītu resursus, piemēram, failus, tīkla savienojumus vai bloķēšanas mehānismus.

# Piemērs, kā izmantot konteksta pārvaldnieku ar failu
with open('myfile.txt', 'r') as f:
    content = f.read()
# Fails automātiski aizveras pēc `with` bloka beigām

Konteksta pārvaldniekus var izveidot, īstenojot protokolu vai izmantojot dekoratoru @contextmanager no contextlib moduļa.

# Piemērs, kā izveidot konteksta pārvaldnieku ar dekoratoru
def timer():
    import time
    start_time = time.time()
    yield  # Ieejas punkts kontekstā
    end_time = time.time()
    print(f"Izpildes laiks: {end_time - start_time:.2f} sekundes")

# Izmanto izveidoto konteksta pārvaldnieku
with timer():
    # Kods, kas jāizmēra
    import time
    time.sleep(1)