Mocking trong pytest: test code phụ thuộc mạng và database
Hàm của bạn gọi API thật thì test sẽ chậm, phụ thuộc mạng và có thể tốn tiền. Mocking cho phép thay thành phần bên ngoài bằng một bản giả có hành vi do bạn quy…
Hàm của bạn gọi API thật thì test sẽ chậm, phụ thuộc mạng và có thể tốn tiền. Mocking cho phép thay thành phần bên ngoài bằng một bản giả có hành vi do bạn quy…
Quy tắc số một của tối ưu: đừng đoán. Lập trình viên gần như luôn đoán sai chỗ nào chậm. Hãy đo, rồi mới sửa.
Đo một đoạn nhỏ với timeit
import timeit
timeit.t…
Viết thẳng mật khẩu database vào file .py rồi đẩy lên GitHub là một trong những lỗi tốn kém nhất mà lập trình viên mắc phải. Cách đúng là tách cấu hình ra khỏi…
Python có hai cách chạy song song, và chọn sai thì chương trình không những không nhanh hơn mà còn chậm đi. Điều quyết định nằm ở một thứ tên là GIL.
GIL là gì…
Gọi 50 API, mỗi lần chờ 1 giây — chạy tuần tự mất 50 giây, nhưng thực ra CPU chỉ ngồi chờ. asyncio cho phép chờ đồng thời, rút xuống còn hơn 1 giây.
Hàm bất đồn…
Trạng thái nên là enum, bản ghi bất biến nên là NamedTuple, còn dữ liệu vốn là dict thì giữ nguyên với TypedDict. Bài viết chỉ ra khi nào dùng cái nào và khác dataclass ở đâu.
Gọi lệnh hệ thống từ Python rất tiện, nhưng cũng là nơi nhiều lỗ hổng chèn lệnh ra đời. Cách làm đúng gói gọn trong một câu: truyền tham số dạng danh sách và tránh xa shell=True.
Module csv chuẩn xử lý được gần hết công việc hằng ngày, miễn là bạn nhớ đúng encoding. Bài viết đi qua DictReader, DictWriter, bẫy số 0 ở đầu, bẫy ngày tháng và khi nào cần openpyxl.
Bốn kiểu dữ liệu trong module collections giúp bạn bỏ hẳn những dòng kiểm tra key lặt vặt: đếm tần suất, gom nhóm, hàng đợi hai đầu và bản ghi nhỏ có tên trường rõ ràng.