Context Managers

Intermediate PythonResource ManagementFree Lesson

Advertisement

Introduction

Context managers ensure resources are properly acquired and released, even when errors occur.

Using with Statement

# File handling
with open("file.txt", "r") as f:
    content = f.read()
# File automatically closed

# Lock management
from threading import Lock
lock = Lock()

with lock:
    # Critical section
    shared_resource += 1
# Lock automatically released

Creating Context Managers

# Using class
class Timer:
    def __enter__(self):
        self.start = time.time()
        return self
    
    def __exit__(self, *args):
        self.end = time.time()
        self.elapsed = self.end - self.start

with Timer() as t:
    time.sleep(1)
print(f"Elapsed: {t.elapsed}")

# Using generator
from contextlib import contextmanager

@contextmanager
def timer():
    start = time.time()
    try:
        yield
    finally:
        print(f"Time: {time.time() - start}")

Practice Problems

  1. Create database connection context manager
  2. Implement temporarily change directory context manager
  3. Build transaction context manager with rollback
  4. Create timer decorator as context manager
  5. Manage multiple resources simultaneously

Advertisement

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement