首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >loop.create_task、asyncio.async/future_future和Task有什么不同?

loop.create_task、asyncio.async/future_future和Task有什么不同?
EN

Stack Overflow用户
提问于 2015-11-29 14:30:45
回答 1查看 10.4K关注 0票数 35

我对一些asyncio函数感到有点困惑。我看到有一个BaseEventLoop.create_task(coro)函数来调度一个协同例程。create_task的文档说它是一个新函数,为了兼容,我们应该使用asyncio.async(coro),通过再次参考文档,我看到它是asyncio.ensure_future(coro)的别名,它再次调度协同例程的执行。

同时,我一直在使用Task(coro)来调度协同例程执行,这似乎也运行得很好。那么,所有这些之间的区别是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-29 15:02:18

正如您已经注意到的,它们都做同样的事情。

asyncio.async必须替换为asyncio.ensure_future,因为在PythonPython3.5中,async已成为关键字[1]

create_taskd‘’etre[2]理由

第三方事件循环可以使用它们自己的Task子类来实现互操作性。在本例中,结果类型是Task的子类。

这也意味着不应该直接创建任务,因为不同的事件循环可能有不同的创建“Task”的方式。

编辑

另一个重要的区别是,除了接受协程之外,ensure_future还接受任何可等待的对象;另一方面,create_task只接受协程。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33980086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档