Bộ ba Python vs asyncio

Hôm nay, tôi đã tìm thấy một thư viện có tên là bộ ba, thư viện này nói rằng chính nó là một API không đồng bộ dành cho con người. Những từ này hơi giống với requests'. Vì requests thực sự là một thư viện tốt, tôi tự hỏi những ưu điểm của trio là gì

Không có nhiều bài viết về nó, tôi chỉ tìm thấy một bài báo thảo luận về curioasyncio. Trước sự ngạc nhiên của tôi, trio nói rằng bản thân nó thậm chí còn tốt hơn cả curio [đồ cổ thế hệ tiếp theo]

Sau khi đọc một nửa bài viết, tôi không thể tìm thấy sự khác biệt cốt lõi giữa hai khung không đồng bộ này. Nó chỉ đưa ra một số ví dụ rằng việc triển khai của curio thuận tiện hơn của asyncio. Nhưng cấu trúc cơ bản gần như giống nhau

Vì vậy, ai đó có thể cho tôi lý do để tôi phải chấp nhận rằng trio hoặc curio tốt hơn asyncio không?

tôi đến từ đâu. Tôi là tác giả chính của bộ ba. Tôi cũng là một trong những người đóng góp hàng đầu cho curio [và đã viết bài báo về nó mà bạn liên kết đến] và là một nhà phát triển cốt lõi của Python, người đã tham gia rất nhiều vào các cuộc thảo luận về cách cải thiện asyncio

Trong bộ ba [và curio], một trong những nguyên tắc thiết kế cốt lõi là bạn không bao giờ lập trình với các cuộc gọi lại; . Tôi đoán nếu bạn mở mui xe và xem cách chúng được triển khai trong nội bộ, thì sẽ có những nơi chúng sử dụng lệnh gọi lại hoặc những thứ tương đương với lệnh gọi lại nếu bạn nheo mắt. Nhưng điều đó giống như nói rằng Python và C tương đương nhau vì trình thông dịch Python được triển khai trong C. Bạn không bao giờ sử dụng gọi lại

Dù sao thì

Asyncio trưởng thành hơn

Sự khác biệt lớn đầu tiên là sự trưởng thành của hệ sinh thái. Vào thời điểm tôi viết bài này vào tháng 3 năm 2018, có nhiều thư viện hỗ trợ asyncio hơn là hỗ trợ bộ ba. Ví dụ: hiện tại không có bất kỳ máy chủ HTTP thực nào có hỗ trợ bộ ba. Cơ cấu. Trình phân loại AsyncIO trên PyPI hiện có 122 thư viện trong đó, trong khi Framework. Phân loại bộ ba chỉ có 8. Tôi hy vọng rằng phần này của câu trả lời sẽ nhanh chóng lỗi thời – ví dụ: đây là Kenneth Reitz đang thử nghiệm thêm hỗ trợ bộ ba trong phiên bản tiếp theo của yêu cầu – nhưng ngay bây giờ, bạn nên mong đợi điều đó nếu bạn là bộ ba cho bất cứ điều gì . [Kênh trò chuyện của bộ ba rất hữu ích để tìm hiểu về những gì có sẵn và những gì người khác đang làm. ]

Bộ ba làm cho mã của bạn đơn giản hơn

Xét về các thư viện thực tế, chúng cũng rất khác nhau. Đối số chính cho bộ ba là nó làm cho việc viết mã đồng thời đơn giản hơn nhiều so với sử dụng asyncio. Tất nhiên, lần cuối cùng bạn nghe ai đó nói rằng thư viện của họ khiến mọi thứ khó sử dụng hơn là khi nào. để tôi đưa ra một ví dụ cụ thể. Trong bài nói chuyện này [slide], tôi sử dụng ví dụ triển khai RFC 8305 "Happy eyeballs", đây là một thuật toán đồng thời đơn giản được sử dụng để thiết lập kết nối mạng một cách hiệu quả. Đây là điều mà Glyph đã suy nghĩ trong nhiều năm và phiên bản mới nhất của anh ấy cho Twisted dài ~600 dòng. [Asyncio sẽ giống nhau; Twisted và asyncio rất giống nhau về mặt kiến ​​trúc. ] Trong buổi nói chuyện, tôi dạy bạn mọi thứ bạn cần biết để triển khai nó trong

Chủ Đề