Context Managers Deep Dive
May 30, 2026 | 5 min read
Custom Context Manager
class Timer:
def __enter__(self):
import time
self.start = time.time()
return self
def __exit__(self, *args):
elapsed = time.time() - self.start
print(f"Elapsed: {elapsed:.4f}s")
with Timer():
result = compute(data)
Context Manager for Resources
class ConnectionPool:
def __init__(self, max_size: int):
self.max_size = max_size
self.available = max_size
def acquire(self):
self.available -= 1
return self
def release(self):
self.available += 1
def __enter__(self):
return self.acquire()
def __exit__(self, *args):
self.release()