Tôi đã đọc rất nhiều bài báo và hướng dẫn về điều 3.5 không đồng bộ/chờ đợi của Python. Tôi phải nói rằng tôi khá bối rối, bởi vì một số sử dụng get_event_loop() và run_until_complete(), một số sử dụng Ensure_future(), một số sử dụng asyncio.wait(), và một số sử dụng call_soon(). Có vẻ như tôi có rất nhiều lựa chọn, nhưng tôi không biết họ có hoàn toàn giống nhau hay không có trường hợp bạn sử dụng vòng lặp và có những trường hợp bạn sử dụng wait().Python 3.5 không đồng bộ/đang chờ với ví dụ mã thực
Nhưng vấn đề là tất cả các ví dụ đều hoạt động với asyncio.sleep()
làm mô phỏng hoạt động chậm thực sự, trả về một đối tượng đang chờ. Một khi tôi cố gắng trao đổi dòng này cho một số mã thực sự toàn bộ điều thất bại. Sự khác nhau giữa các cách tiếp cận được viết ở trên là gì và tôi nên chạy thư viện của bên thứ ba chưa sẵn sàng cho async/await như thế nào. Tôi sử dụng dịch vụ Quandl để lấy một số dữ liệu chứng khoán.
import asyncio
import quandl
async def slow_operation(n):
# await asyncio.sleep(1) # Works because it's await ready.
await quandl.Dataset(n) # Doesn't work because it's not await ready.
async def main():
await asyncio.wait([
slow_operation("SIX/US9884981013EUR4"),
slow_operation("SIX/US88160R1014EUR4"),
])
# You don't have to use any code for 50 requests/day.
quandl.ApiConfig.api_key = "MY_SECRET_CODE"
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Tôi hy vọng bạn nhận được điểm mất cảm giác và cách đơn giản tôi muốn chạy song song.
Cảm ơn bạn đã ngoại lệ. Tôi nhận được điểm nhưng bạn có thể viết mã đầy đủ trong ví dụ mã cuối cùng không? Cảm ơn bạn. – grafa
@grafa Đây rồi. – freakish
Cảm ơn bạn. Tôi có thể gọi trình bao bọc nhiều lần liên tiếp với các tham số khác nhau và nó được gọi song song không? – grafa