•2 min read

Threading, Multiprocessing và Coroutine trong Python: Giải thích dễ hiểu

Threading, Multiprocessing và Coroutine trong Python: Giải thích dễ hiểu

Tối Ưu Hóa Python: Threading, Multiprocessing và Coroutines

Audio Briefing
0:00 / 0:00
Rào cản lớn nhất: GIL

Global Interpreter Lock (GIL) chỉ cho phép một thread chạy tại một thời điểm để bảo vệ bộ nhớ. Dù máy có 8 lõi, Python mặc định chỉ xài 1! Dưới đây là 3 cách vượt rào.


1. Threading

Hoàn hảo cho I/O

Mỗi khi thread phải chờ I/O (gọi API, đọc file), nó sẽ tự nhả GIL để thread khác chạy chen vào.

Cách hoạt động

Chạy nhiều thread trong cùng một process, chia sẻ bộ nhớ và chung GIL.

Khi nào nên dùng

Gửi network request, đọc/ghi disk, truy vấn DB.

Tránh dùng khi

Các tác vụ tính toán nặng (CPU-bound) vì GIL sẽ cản trở tốc độ.

Advertisement

2. Multiprocessing

Chạy Song Song Đích Thực

Tạo ra các process hoàn toàn độc lập! Mỗi process có bộ nhớ riêng, GIL riêng và chạy trên một CPU core riêng biệt.

Cách hoạt động

Nhân bản thành nhiều process chia ra các lõi CPU xử lý cùng lúc.

Khi nào nên dùng

Render video, xử lý AI, nén dữ liệu, tính toán toán học nặng.

Đánh đổi

Khởi động tốn thời gian, ngốn RAM nhiều hơn do không dùng chung bộ nhớ.

3. Coroutines (asyncio)

Giải pháp thời thượng

Coroutine siêu nhẹ. Thay vì để hệ điều hành quyết định, code của bạn sẽ tự lên tiếng: "Tui đang phải chờ, chạy task khác đi" bằng lệnh await.

Cách hoạt động

Chỉ dùng duy nhất 1 thread và 1 event loop để xoay vòng các task.

Khi nào nên dùng

Làm WebSockets, xây dựng API backend siêu tốc (như FastAPI).

Lợi thế vượt trội

Có thể chạy 10,000 coroutines cực mượt, trong khi 10,000 threads sẽ làm treo máy.

Tóm lại: Chọn Cái Nào?

Công thức chọn siêu tốc
  • Chờ mạng/DB với số lượng kết nối khổng lồ? → Coroutine (asyncio)
  • Chờ vài chục task I/O đơn giản? → Threading
  • Tính toán cày ải CPU liên tục? → Multiprocessing
Share this article:

Stay Updated

Get the latest posts delivered straight to your inbox.

Free Developer Utilities

Free In-Browser Developer Tools

Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.

Explore Tools
Advertisement