Guido van Rossum在2014年关于郁金香/Asyncio shows the slide的演讲中:

Tasks vs coroutines

  • 比较:

    • res=某个合作项目的yield 率(…)
    • res=任务的yield 率(一些协同程序(…)
  • 任务可以在不等待的情况下取得进展

    • As log as you wait for something else
      • i、 e.yield 率

我完全没有抓住重点.

在我看来,这两种 struct 都是相同的:

在裸协同路由的情况下——它得到调度,因此无论如何都会创建任务,因为调度器与任务一起运行,那么协同路由调用方协同路由将被挂起,直到被调用方完成,然后可以自由地继续执行.

Task个情况下,新任务被安排,调用方协同路由等待其完成.

在这两种情况下代码执行的方式有什么不同,开发者在实践中应该考虑哪些影响?

p、 s.

推荐答案

对于调用方来说,co routine yield from coroutine()感觉像是一个函数调用(即,当coroutine()完成时,它将再次获得控制权).

另一方面,yield from Task(coroutine())更像是创建了一条新的线程.Task()几乎立即返回,而且很可能在coroutine()结束之前,调用者获得了控制权.

f()th = threading.Thread(target=f, args=()); th.start(); th.join()之间的差别很明显,对吗?

Python-3.x相关问答推荐

如何使用Selenium从网站下拉菜单中获取值列表?

在Python中基于组/ID将两个数据帧进行映射,找出较接近的值

Python (pandas) - 判断一个 df 中的值是否在另一个(不相等)df 中的任何对之间

在新数据帧上自动提取两个字符串 python 之间的相等性

Python base64.b32hexencode 未创建预期结果

如果网站加载时间过长,如何强制 Selenium 刷新

使用 RANSAC 在激光雷达点云中查找电力线

如何查找 tensorflow.python.data.ops.dataset_ops.MapDataset 对象的大小或形状,make_csv_dataset 的输出

spinbutton调整up/down箭头

如何将数据框中的每一行转换为具有属性的 node ?

参数化泛型不能与类或实例判断一起使用

Seaborn 热图 colored颜色 条标签作为百分比

'~'(波浪号)运算符在 Python 中的应用

为什么等效的 Python 代码要慢得多

python asyncio - 如何等待取消的屏蔽任务?

是否在未完成初始化的对象上调用了 del?

Python 3 - Zip 是 pandas 数据框中的迭代器

Python 3 中的连接列表

带有自定义标头的 urllib.urlretrieve

在 macbook pro M1 上安装 Tensorflow 时出现zsh:非法硬件指令 python