Hỗ trợ nền tảng¶
Mô-đun asyncio được thiết kế để có thể di động nhưng một số nền tảng có những khác biệt và hạn chế nhỏ do kiến trúc và khả năng cơ bản của nền tảng.
Tất cả nền tảng¶
loop.add_reader()vàloop.add_writer()không thể được sử dụng để giám sát I/O tệp.
cửa sổ¶
Source code: Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py
Thay đổi trong phiên bản 3.8: Trên Windows, ProactorEventLoop hiện là vòng lặp sự kiện mặc định.
Tất cả các vòng lặp sự kiện trên Windows không hỗ trợ các phương pháp sau:
loop.create_unix_connection()vàloop.create_unix_server()không được hỗ trợ. Họ socketsocket.AF_UNIXdành riêng cho Unix.loop.add_signal_handler()vàloop.remove_signal_handler()không được hỗ trợ.
SelectorEventLoop có những hạn chế sau:
SelectSelectorđược sử dụng để chờ các sự kiện ổ cắm: nó hỗ trợ ổ cắm và được giới hạn ở 512 ổ cắm.loop.add_reader()vàloop.add_writer()chỉ chấp nhận các tay cầm socket (ví dụ: bộ mô tả tệp ống không được hỗ trợ).Các đường ống không được hỗ trợ nên các phương thức
loop.connect_read_pipe()vàloop.connect_write_pipe()không được triển khai.Subprocesses không được hỗ trợ, tức là các phương thức
loop.subprocess_exec()vàloop.subprocess_shell()không được triển khai.
ProactorEventLoop có những hạn chế sau:
Các phương thức
loop.add_reader()vàloop.add_writer()không được hỗ trợ.
Độ phân giải của đồng hồ đơn điệu trên Windows thường vào khoảng 15,6 mili giây. Độ phân giải tốt nhất là 0,5 mili giây. Độ phân giải phụ thuộc vào phần cứng (có sẵn HPET) và cấu hình Windows.
Hỗ trợ quy trình con trên Windows¶
Trên Windows, vòng lặp sự kiện mặc định ProactorEventLoop hỗ trợ các quy trình con, trong khi SelectorEventLoop thì không.
macOS¶
Các phiên bản macOS hiện đại được hỗ trợ đầy đủ.
macOS <= 10.8
Trên macOS 10.6, 10.7 và 10.8, vòng lặp sự kiện mặc định sử dụng selectors.KqueueSelector, không hỗ trợ các thiết bị ký tự trên các phiên bản này. SelectorEventLoop có thể được cấu hình thủ công để sử dụng SelectSelector hoặc PollSelector nhằm hỗ trợ các thiết bị ký tự trên các phiên bản macOS cũ hơn này. Ví dụ:
nhập asyncio
bộ chọn nhập
bộ chọn = bộ chọn.SelectSelector()
loop = asyncio.SelectorEventLoop(selector)
asyncio.set_event_loop(vòng lặp)