我读过吨的文章和教程有关Python的3.5异步/等待的事情。我不得不说,我很困惑,因为一些使用get_event_loop()和run_until_complete(),一些使用ensure_future(),一些使用asyncio.wait(),一些使用call_soon()。Python 3.5异步/等待与真实代码示例
看起来我有很多选择,但我不知道它们是完全相同的,还是有些情况下使用循环,并且有些情况下使用wait()。
但事情是所有的例子与asyncio.sleep()
一起工作,作为真正的慢操作的模拟,它返回一个等待对象。一旦我尝试将这条线换成一些真实的代码,整个事情就会失败。上面所写的方法与我应该如何运行尚未准备好进行异步/等待的第三方库之间的区别是什么。我确实使用Quandl服务来获取一些股票数据。
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())
我希望你明白我的感受是多么的迷茫,我想要平行运行多么简单的事情。
谢谢你的exaplanation。我明白了,但是你可以在最后的代码示例中提供完整的代码吗?谢谢。 – grafa
@grafa在这里,你去。 – freakish
谢谢。我可以用不同的参数连续多次调用包装,它会被并行调用吗? – grafa