asyncio --- I/O không đồng bộ¶
asyncio là thư viện để viết mã concurrent bằng cú pháp async/await.
asyncio được sử dụng làm nền tảng cho nhiều khung công tác không đồng bộ Python cung cấp mạng và máy chủ web hiệu suất cao, thư viện kết nối cơ sở dữ liệu, hàng đợi tác vụ phân tán, v.v.
asyncio thường phù hợp hoàn hảo với mã mạng structured cấp cao và ràng buộc IO.
Xem thêm
- Tổng quan về khái niệm của asyncio
Giải thích các nguyên tắc cơ bản của asyncio.
asyncio cung cấp một bộ API high-level để:
run Python coroutines đồng thời và có toàn quyền kiểm soát việc thực thi chúng;
thực hiện network IO and IPC;
điều khiển subprocesses;
phân phối nhiệm vụ qua queues;
mã đồng thời synchronize;
Ngoài ra, còn có các API low-level dành cho library and framework developers để:
tạo và quản lý event loops, cung cấp API không đồng bộ cho networking, chạy subprocesses, xử lý OS signals, v.v;
triển khai các giao thức hiệu quả bằng transports;
Các thư viện và mã dựa trên cuộc gọi lại bridge với cú pháp không đồng bộ/chờ đợi.
sẵn có: not WASI.
Mô-đun này không hoạt động hoặc không có trên WebAssembly. Xem Nền tảng WebAssugging để biết thêm thông tin.
asyncio REPL
Bạn có thể thử nghiệm bối cảnh đồng thời asyncio trong REPL:
$ trăn -m asyncio
asyncio REPL ...
Sử dụng trực tiếp "await" thay vì "asyncio.run()".
Nhập "trợ giúp", "bản quyền", "tín dụng" hoặc "giấy phép" để biết thêm thông tin.
>>> nhập asyncio
>>> đang chờ asyncio.sleep(10, result='hello')
'xin chào'
Zz001zz này cung cấp khả năng tương thích hạn chế với PYTHON_BASIC_REPL. Chúng tôi khuyên bạn nên sử dụng REPL mặc định để có đầy đủ chức năng và các tính năng mới nhất.
Tăng auditing event cpython.run_stdin mà không có đối số.
Thay đổi trong phiên bản 3.12.5: (cũng 3.11.10, 3.10.15, 3.9.20 và 3.8.20) Phát ra các sự kiện kiểm tra.
Thay đổi trong phiên bản 3.13: Sử dụng PyREPL nếu có thể, trong trường hợp đó PYTHONSTARTUP cũng được thực thi. Phát ra các sự kiện kiểm tra.
Tài liệu tham khảo
API cấp cao
API cấp thấp
Hướng dẫn và Hướng dẫn
Ghi chú
Mã nguồn của asyncio có thể được tìm thấy trong Lib/asyncio/.