← Back to Python

All Topics

Advertisement

Learn/Python/Intermediate Python

Context Managers

Topic: Resource Management

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

Advertisement

Need More Practice?

Get personalized Python help from ChatWhole's AI-powered platform.

Get Expert Help →