Nếu bạn có một số kinh nghiệm với Python, rất có thể bạn đã từng sử dụng thư viện Yêu cầu tại một thời điểm nào đó. Đây là một thư viện tuyệt vời để thực hiện các yêu cầu HTTP và tương tác với các API
Ưu điểm của Yêu cầu là nó đơn giản và dễ hiểu về mặt cú pháp. Nhược điểm là nó hiện không hoạt động với Async IO — có thể rất chậm nếu bạn đang xử lý nhiều yêu cầu HTTP
HTTPX là ứng dụng khách HTTP mới có hỗ trợ không đồng bộ. Nó rất giống với Yêu cầu. Trong hướng dẫn này, tôi sẽ tạo một chương trình với các yêu cầu, giới thiệu cho bạn về Async IO và cuối cùng là sử dụng Async IO & HTTPX để làm cho chương trình nhanh hơn nhiều
Hướng dẫn này giả định rằng bạn đã sử dụng thư viện Yêu cầu của Python trước đây
Chương trình Python với các yêu cầuTrong ví dụ này, tôi sẽ sử dụng API Sách của Google để cung cấp cho tôi tên của những cuốn sách có mã ISBN của chúng. Hãy gọi nó là công cụ tìm sách
Giải trình
Đây là quy trình của chương trình tìm sách
- Tôi có danh sách mã ISBN của nhiều sách khác nhau được lưu trữ trong
8: The Adventures of Sherlock Holmes
3. Tôi sử dụng
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
4 để biết thời gian tôi bắt đầu đưa ra yêu cầu. Sau đó, tôi liệt kê và lặp qua danh sách
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75 - Tiếp theo, tôi in chỉ mục và tên của cuốn sách được hàm
8: The Adventures of Sherlock Holmes
5 trả về bằng cách chuyển chỉ mục danh sách & mã ISBN làm tham số. Lý do tôi in chỉ mục danh sách sẽ rõ ràng trong phiên bản không đồng bộ
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75 - Cuối cùng, tôi tính toán sự khác biệt giữa thời gian hiện tại và thời gian bắt đầu để có được thời gian chạy tập lệnh
Đây là đầu ra của kịch bản
0 : The Hobbit
1 : The Fellowship of the Ring
2 : 1984
3 : Brave New World
4 : The Player of Games
5 : Watchmen
6 : Crime and Punishment
7 : Mistborn
8 : The Adventures of Sherlock Holmes
9 : The Great Gatsby
10 : Moby-Dick
11 : The Way of Kings
12 : War and Peace
13 : The Metamorphosis - Franz Kafka, New Edition
14 : Liar's Poker
Time Taken:6.764999999999418
mất 6. 76 giây để in tên sách
Giới thiệu nhanh về Async IO
Async IO sử dụng đa nhiệm hợp tác. Thay vì tạo các luồng cho đa nhiệm, bạn sử dụng một vòng lặp sự kiện duy nhất. Hãy nghĩ về vòng lặp sự kiện giống như vòng lặp while liên tục chuyển đổi giữa các tác vụ trong chương trình cho đến khi không còn tác vụ nào nữa
Việc chuyển đổi tác vụ hầu như luôn diễn ra khi có một tác vụ ràng buộc I/O [các cuộc gọi mạng, tệp I/O] trong chương trình mà CPU vẫn ở chế độ chờ trong khi chờ tài nguyên đó khả dụng
Hình ảnh này - Bạn cần thực hiện một yêu cầu HTTP và lưu trữ dữ liệu phản hồi. Chỉ với 1 yêu cầu thật đơn giản. Nhưng điều gì sẽ xảy ra nếu bạn phải thực hiện 10 hoặc 100 yêu cầu trong một vòng lặp như trong chương trình tìm sách. Khi chương trình đồng bộ, luồng là
Luồng đồng bộ — Được tạo bởi tác giả
- thực hiện yêu cầu
- Chờ phản hồi
- Xử lý phản hồi
- Lặp lại các bước 1–3 cho tất cả các yêu cầu
Các bước này được lặp lại cho mỗi yêu cầu. Vấn đề là trong khi chương trình đang chờ phản hồi từ máy chủ web, thì CPU không hoạt động khi nó có thể thực hiện một số tác vụ khác
Với Async IO, bạn có thể làm cho chương trình chuyển sang tác vụ khác trong khi chờ phản hồi từ máy chủ web. Trong ví dụ của chúng tôi, chúng tôi sẽ thực hiện đồng thời tất cả các yêu cầu HTTP và xử lý từng phản hồi khi nó xuất hiện. Luồng chương trình cho 10 yêu cầu trở thành như thế này
Luồng không đồng bộ [Các câu trả lời sẽ không theo thứ tự] — Được tạo bởi tác giả
- Thực hiện tuần tự tất cả 10 yêu cầu và chờ phản hồi
- Xử lý phản hồi nào đến trước
Ưu điểm ở đây là khi chúng tôi có thể thực hiện tất cả 10 yêu cầu cùng một lúc, một số phản hồi có thể đến chậm trong khi những phản hồi khác có thể nhanh hơn rất nhiều. Chúng tôi có thể xử lý bất kỳ phản hồi nào đến trên cơ sở ai đến trước được phục vụ trước, nhanh hơn nhiều so với phiên bản đồng bộ
Đồng thời không phải là song song. Rất dễ bị nhầm lẫn với hai thuật ngữ
Async IO đã được giới thiệu trong Python phiên bản 3. 4 với thư viện
8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
6. Các từ khóa 8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
7 / 8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
8 đã trở thành một phần của thư viện chuẩn của Python kể từ phiên bản 3. 6. Đối với hướng dẫn này, tôi đã sử dụng Python phiên bản 3. 8. Tôi sẽ giải thích việc triển khai 8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
6 bằng cách sửa đổi chương trình tìm sáchGhi chú. Thư viện asyncio thay đổi khá nhiều trong mọi phiên bản python, vì vậy vui lòng kiểm tra phiên bản của bạn trước khi bạn cảm thấy khó chịu vì lỗi cú pháp. ]
Đủ lý thuyết. Hãy quay lại viết một số mã
HTTPX & IO không đồng bộĐầu tiên, cài đặt httpx bằng lệnh này
8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
0Hãy sửa đổi chương trình tìm sách của chúng ta bằng asyncio & HTTPX. Lúc đầu có vẻ hơi choáng ngợp nhưng hãy kiên trì. tôi sẽ giải thích mọi thứ
Giải trình
Hàm async được gọi là coroutine. Coroutines là các chức năng hợp tác. Nó chỉ có thể được thực thi bên trong một vòng lặp sự kiện. Nó có thể tạm dừng quá trình thực thi của nó ở giữa và chuyển quyền điều khiển cho vòng lặp sự kiện, vòng lặp này sau đó sẽ thực thi một chương trình coroutine khác. Quá trình thực thi bị tạm dừng khi coroutine cần đợi tài nguyên, trong trường hợp của chúng tôi — phản hồi từ máy chủ. Nó sẽ tiếp tục thực thi khi có phản hồi
Các chương trình không đồng bộ chỉ đơn giản là tập hợp các coroutine. Trong python, từ khóa
8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
7 được thêm vào trước định nghĩa hàm để chỉ ra rằng đó là một coroutineTôi sẽ đi qua luồng chương trình
- Tôi chạy
8: The Adventures of Sherlock Holmes
1 để bắt đầu vòng lặp sự kiện sẽ gọi quy trình đăng ký
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
2
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75 - Tiếp theo, tôi thu thập danh sách các đối tượng coroutine của
8: The Adventures of Sherlock Holmes
3 với mỗi mã ISBN & số chỉ mục làm tham số trong
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
4. Lưu ý rằng mặc dù đã gọi coroutine nhưng nó không thực thi. Thay vào đó, nó trả về một đối tượng coroutine. Một đối tượng coroutine ở đây, nói một cách đơn giản, là một thể hiện của
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
3 nhưng cần được lên lịch bên trong vòng lặp sự kiện để được thực thi. Để lên lịch cho đối tượng coroutine thực hiện, bạn phải sử dụng từ khóa
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
8 trước nó. Tôi sẽ giải thích thêm về nó trong bước 4
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75 - Tôi sử dụng
8: The Adventures of Sherlock Holmes
7 để thực thi các đối tượng coroutine.
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
7 là một coroutine lên lịch các đối tượng có thể chờ đợi [như coroutines] sẽ được thực thi bởi vòng lặp sự kiện. Nó cũng tạo ra một danh sách các đối tượng được trả về từ mỗi cuộc gọi coroutine. Trong coroutine của tôi[
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
3], tôi không trả lại bất cứ thứ gì, vì vậy tôi không yêu cầu danh sách này
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75 - Trong
8: The Adventures of Sherlock Holmes
3, tôi tạo ứng dụng khách không đồng bộ với HTTPX. Sau đó, tôi gửi yêu cầu đến cùng một URL. Chú ý từ khóa
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
8 trước
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
32. Điều này là do
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
33 cũng là một coroutine. Từ khóa
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
8 cho phép bạn chỉ ra vị trí trong coroutine mà việc thực thi cần phải tạm dừng. Ở đây tôi sử dụng từ khóa
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
8 trước
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
32 vì tôi phải chờ phản hồi từ máy chủ trước khi tiếp tục.
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
Lưu ý. Mỗi coroutine là một đối tượng có thể chờ đợi. Ngay cả8: The Adventures of Sherlock Holmes
7 cũng được chờ đợi. Điều này là do bạn có thể chuyển sang tác vụ khác trong khi đợi phản hồi. Mọi đối tượng có thể chờ đợi đều yêu cầu từ khóa
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.758: The Adventures of Sherlock Holmes
8 trước nó để thực thi nó.
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75 - Sau khi máy khách gửi yêu cầu, quy trình đăng ký sẽ trao quyền kiểm soát việc thực thi trở lại vòng lặp sự kiện, vòng lặp này sẽ gọi đối tượng ______139 theo lịch trình tiếp theo. Quá trình sẽ lặp lại cho tất cả các đối tượng trong
8: The Adventures of Sherlock Holmes
4
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75 - Ngay khi có phản hồi từ bất kỳ yêu cầu nào, vòng lặp sự kiện sẽ tiếp tục thực thi quy trình đăng ký cụ thể đó từ nơi nó được chờ đợi. Điều này có nghĩa là đầu ra sẽ không theo thứ tự yêu cầu vì một số phản hồi sẽ nhanh hơn những phản hồi khác. Nếu một phản hồi đến trong khi một coroutine đang được thực thi, thì coroutine của các phản hồi đó sẽ được lên lịch chờ để tiếp tục thực thi
- Khi tất cả các coroutine được thực thi, vòng lặp sự kiện sẽ thoát và thời gian thực hiện được in
Khi bạn chạy chương trình, bạn sẽ nhận được kết quả tương tự như thế này
8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
Bạn có thể sử dụng chỉ mục để xem thứ tự phản hồi. Chỉ mất 0. 75 giây. Đó là mức tăng 900%. Tất nhiên, kết quả sẽ thay đổi tùy theo tốc độ internet của bạn nhưng chương trình async & HTTPX trong mọi trường hợp sẽ nhanh hơn nhiều
Đặt giới hạn cho Máy khách HTTPXTrước khi tôi kết luận, điều quan trọng là đặt giới hạn cho số lượng yêu cầu đồng thời trong HTTPX. Rất nhiều API và trang web có giới hạn về số lượng yêu cầu bạn có thể gửi mỗi giây hoặc mỗi phút. May mắn thay, HTTPX có một chức năng có thể làm điều này
Bạn có thể đặt giới hạn bằng cách tạo đối tượng
8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
418: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
42Sau đó, bạn cần chuyển đối tượng giới hạn cho ứng dụng khách httpx
8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
43HTTPX đặt theo mặc định 10 kết nối cố định và 100 kết nối max_connections tại bất kỳ điểm nào. Bạn cũng có thể đặt cả hai thành
8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
44, nếu bạn muốn khách hàng của mình gửi nhiều yêu cầu nhất có thểPhần kết luậnBạn có thể thấy cách thư viện
8: The Adventures of Sherlock Holmes
0: The Hobbit
14: Liar's Poker
9: The Great Gatsby
11: The Way of Kings
4: The Player of Games
5: Watchmen
2: 1984
13: The Metamorphosis - Franz Kafka, New Edition
10: Moby-Dick
7: Mistborn
1: The Fellowship of the Ring
3: Brave New World
6: Crime and Punishment
Time Taken:0.75
6 có thể tăng tốc chương trình của bạn. Có thể mất một lúc để bạn hiểu nó nhưng nó chắc chắn đáng để nỗ lựcMặt khác, nó có thể làm cho chương trình của bạn khó đọc hơn và khó quản lý hơn khi bạn xâu chuỗi nhiều coroutine hơn.
Async IO có rất nhiều tính năng để cung cấp. Bạn cũng có thể sử dụng nó để tạo máy chủ TCP, tăng tốc tệp I/O, v.v.