Python Context Managers: Ba trường hợp bạn thực sự cần

Hầu hết các hướng dẫn đều hiển thị ví dụ tầm thường with open(...) và dừng lại. Đây là ba mẫu mà tôi thực sự sử dụng trong mã thực tế, và chế độ lỗi mà mỗi mẫu ngăn chặn. Trường hợp 1: Dọn dẹp tài nguyên và xử lý lỗi Khi bạn có tài nguyên phải dọn dẹp, bất kể điều gì xảy ra: class DatabaseConnection: def __init__(self, config): self.config = config self.connection = None def __enter__(self): self.connection = create_connection(self.config) return self.connection def __exit__(self, exc_type, exc_val, exc_tb): if self.connection: self.connection.close() Tại sao điều này quan trọng Dọn dẹp tài nguyên ngay cả trong trường hợp ngoại lệ Ngăn chặn rò rỉ tài nguyên Làm cho mã đáng tin cậy hơn Trường hợp 2: Quản lý trạng thái tạm thời Khi bạn cần thay đổi tạm thời một số trạng thái, sau đó khôi phục nó: ...

3 tháng 5, 2026 · 2 phút · Tech Notes Việt Nam

Đọc đầu ra EXPLAIN ANALYZE trong Postgres mà không bị lạc

Đầu ra EXPLAIN ANALYZE trông đáng sợ cho đến khi bạn biết ba con số thực sự quan trọng. Đây là thứ tự tôi đọc chúng, và các mẫu chỉ ra các lỗi cụ thể. Ba con số thực sự quan trọng 1. Tổng thời gian thực thi (Total Execution Time) Total runtime: 1234.567 ms Đây là chỉ số quan trọng nhất. Nếu truy vấn chậm, nó sẽ cho bạn biết ở đây. ...

2 tháng 5, 2026 · 2 phút · Tech Notes Việt Nam