了解异步/等待与任务之间的区别

时间:2019-02-11 23:11:28

标签: python asynchronous async-await task

在Python文档中,它描述了如何启动和使用coroutines

本节介绍如何使用Task

Task部分中,其指出:

  

任务用于同时安排协程

我无法理解,当我coroutines不使用Task开始await 时会发生什么?代码是否正在运行asynchronously,但不能同时运行 ?这是否意味着当代码看到Task时它就会执行其他操作?

当我使用join()时,是否像一样启动两个线程并调用array?我开始两个或多个任务,然后等待结果,对吗?

1 个答案:

答案 0 :(得分:0)

在简单情况下,手动创建Tasks与线程有点相似–您可以创建它们,事件循环最终将运行它们,并且最终应获得结果/异常。

但是在大​​多数情况下,您的代码是围绕await coro()构建的-根本不是底层的。这意味着您的代码可以coro内执行一些I / O操作,因此进程可以自由地将隐式创建的任务放入队列,并在以后恢复执行。