揭秘Python并发编程——协程

原文链接:https://baijiahao.baidu.com/s?id=1649450510185145678&wfr=spider&for=pc

Python并发编程一直是进阶当中不可跨越的一道坎,其中包括进程、线程、协程,今天我们就来聊一聊协程。

协程的定义很简单,从头到尾只有一条任务线在进行,就像是你可以在煮鸡蛋的时候背单词,但无论是煮鸡蛋还是背单词,始终都是你一个人在进行任务,线程的概念稍有不同,是把一个人分成两个人,一个在煮鸡蛋,一个在背单词,我们直接上代码看一下:

这是一段普通的代码,我们分别让不同的url睡眠不同的时间,总共是10s,看一下运行结果:

然后,我们使用协程来执行这段代码:

我们来看一下运行时间:

从结果来看,运行时间从10s缩短到了4s,基本上是最长的那个程序的运行时间。

那么具体的协程实现的具体原理是什么呢,我们来分解一下代码:

先看一下输出内容:

我们这里使用async来声明一个异步函数,使用await来执行异步函数,await的执行效果会使程序阻塞在这里,最后需要使用asyncio.run()来触发运行,asyncio.run()作为主程序的入口函数,在整个过程中只执行一次

当使用Task创建任务时,所有任务都会做好准备:

首先打印'before await'执行await task1,打印'worker_1 start',遇到sleep开始切换切换到执行await task2,后续没有需要执行的任务,所以暂时停留在Task2当task1的sleep完成,任务切回task1,打印'worker_1 done'之后切回task2等待sleep完成,打印'worker_2 done'以上就是协程的执行顺序了。

希望大家这个例子可以帮助大家更好的运用python。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 804. 唯一摩尔斯密码词(哈希+set)

文章目录1. 题目2. 解题1. 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a” 对应 “.-”, “b” 对应 “-…”, “c” 对应 “-.-.”, 等等。 为了方便,所有26个英文字母对应摩尔…

计算机基础晦涩难懂?那你是没看他的图解文章!

这年头,写计算机基础的人好之又少,能把枯燥无味的计算机基础写的通俗易懂的人更是少,而就有一位叫「小林coding」的公众号横空出世,真的是一股清流,他酷爱「图解」计算机基础文章,真正做到了图解&#xff0…

Litho在美团动态化方案MTFlexbox中的实践

1. MTFlexbox MTFlexbox是美团内部应用的非常成熟的一种跨平台动态化解决方案,它遵循了CSS3中提出的Flexbox规范来抹平多平台的差异。MTFlexbox适用于重展示、轻交互的业务场景,与现有HTML、React Native、Weex等跨平台方案相比,MTFlexbox具备…

服务器部署docker

服务器部署docker docker简介## 可以把docker是一个容器,可以让开发者将自己的项目部署到这个容器中,最常用的场景是将自己的后端项目部署到服务器的时候会将其打入docker镜像中,可以理解为一个开销更小的虚拟机。 docker好处## 可以轻易地让…

LeetCode 461. 汉明距离(异或^ 与)

文章目录1. 题目2. 解题1. 题目 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y&#xff0c;计算它们之间的汉明距离。 注意&#xff1a; 0 ≤ x, y < 2^31.示例:输入: x 1, y 4输出: 2解释: 1 (0 0 0 1) 4 (0 1 0 0)…

论文浅尝 | NumNet: 一种带有数学推理的机器阅读理解模型

论文笔记整理&#xff1a;吴林娟。来源&#xff1a;EMNLP2019论文链接&#xff1a;https://arxiv.org/pdf/1910.06701.pdf开放源码&#xff1a;https://github.com/ranqiu92/NumNet概述本文提出了一个将数学推理融入机器阅读理解的模型——NumNet&#xff0c;其中利用数字感知的…

2021,你好哇!发个小红包可好~

小伙伴们&#xff0c;大家新年快乐哇&#xff5e;凡是过往皆序章&#xff0c;所有将来皆可盼。2020磨难太多&#xff0c;就祝大家2021多吃不胖叭&#xff01;原创即正义&#xff01;2020年对卖萌屋来说是非常不平凡的一年。这一年的时间里&#xff0c;卖萌屋坚守内容创作的初心…

降低软件复杂性一般原则和方法

一、前言 斯坦福教授、Tcl语言发明者John Ousterhout 的著作《A Philosophy of Software Design》[1]&#xff0c;自出版以来&#xff0c;好评如潮。按照IT图书出版的惯例&#xff0c;如果冠名为“实践”&#xff0c;书中内容关注的是某项技术的细节和技巧&#xff1b;冠名为“…

LeetCode 657. 机器人能否返回原点

文章目录1. 题目2. 解题1. 题目 在二维平面上&#xff0c;有一个机器人从原点 (0, 0) 开始。给出它的移动顺序&#xff0c;判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R&#xff08;右&am…

论文浅尝 | 基于图匹配神经网络的跨语言知识图对齐 (ACL 2019)

本文转载自公众号&#xff1a;PaperWeekly。作者&#xff1a;王文博&#xff0c;哈尔滨工程大学硕士生&#xff0c;研究方向为知识图谱、表示学习。动机在本篇文章之前&#xff0c;跨语言知识图谱对齐研究仅依赖于从单语知识图谱结构信息中获得的实体嵌入向量。并且大多数研究将…

谷歌大改Transformer注意力,速度、内存利用率都提上去了-新的 Transformer 架构——Performer

原文地址&#xff1a;https://www.jiqizhixin.com/articles/2020-10-28-10 Transformer 有着巨大的内存和算力需求&#xff0c;因为它构造了一个注意力矩阵&#xff0c;需求与输入呈平方关系。谷歌大脑 Krzysztof Choromanski 等人最近提出的 Performer 模型因为随机正正交特性…

一文搞懂 PyTorch 内部机制

文 | ArchWalker译者序&#xff1a;这篇博文是一篇非常新的介绍PyTorch内部机制的文章&#xff0c;作者Edward Z Yang来自于Stanford大学&#xff0c;是PyTorch的核心开发者之一。文章中介绍了如何阅读PyTorch源码和扩展PyTorch的技巧。目前讲PyTorch底层的文章不多&#xff0c…

美团外卖商家端视频探索之旅

背景 美团外卖至今已迅猛发展了六年&#xff0c;随着外卖业务量级与日俱增&#xff0c;单一的文字和图片已无法满足商家的需求&#xff0c;商家迫切需要更丰富的商品描述手段吸引用户&#xff0c;增加流量&#xff0c;进而提高下单转化率和下单量。商品视频的引入&#xff0c;在…

Android官方开发文档Training系列课程中文版:构建第一款安卓应用之工程创建

这节课你将会学到&#xff1a; - 使用Android Studio创建一个工程。 - 使用命令行工具创建一个工程。 你也应该阅读&#xff1a; - 安装SDK - 管理工程 安卓项目包含了包括源代码在内的所有文件。Android SDK工具使我们很轻松的创建一个包含一系列默认目录和文件的的安卓工…

LeetCode 1051. 高度检查器

文章目录1. 题目2. 解题1. 题目 学校在拍年度纪念照时&#xff0c;一般要求学生按照 非递减 的高度顺序排列。 请你返回至少有多少个学生没有站在正确位置数量。该人数指的是&#xff1a;能让所有学生以 非递减 高度排列的必要移动人数。 示例&#xff1a;输入&#xff1a;[…

论文浅尝 | 基于动态记忆的原型网络进行元学习以实现少样本事件探测

本文转载自公众号&#xff1a;浙大KG。 论文题目&#xff1a;Meta-Learning with Dynamic-Memory-Based Prototypical Network for Few-Shot Event Detection本文作者&#xff1a;邓淑敏&#xff0c;浙江大学在读博士&#xff0c;研究方向为低资源条件下知识图谱自动化构建关键…

字节跳动破局联邦学习:开源Fedlearner框架,广告投放增效209%

本文介绍了字节跳动联邦学习技术团队自研的联邦学习平台 Fedlearner &#xff0c;分享了该平台的技术实现与落地应用体验&#xff0c;向读者展示了字节跳动如何联邦学习落地难题的突破点。作为分布式的机器学习范式&#xff0c;联邦学习能够有效解决数据孤岛问题&#xff0c;让…

软硬兼施极限轻量BERT!能比ALBERT再轻13倍?!

文 | Sheryc_王苏这个世界上有两种极具难度的工程&#xff1a;第一种是把很平常的东西做到最大&#xff0c;例如把语言模型扩大成能够写诗写文写代码的GPT-3&#xff1b;而另一种恰恰相反&#xff0c;是把很平常的东西做到最小。对于NLPer来说&#xff0c;这种“小工程”最迫在…

论文浅尝 | 基于事理图谱的脚本事件预测

论文笔记整理&#xff1a;邱圣广&#xff0c;南京大学硕士&#xff0c;研究方向为自然语言处理。链接&#xff1a;https://www.ijcai.org/proceedings/2018/0584.pdf绪论1. 脚本事件预测脚本事件预测这个任务最早是由Chambers andJurafsky于2008年提出来的&#xff0c;要求给定…

美团集群调度系统HULK技术演进

本文根据美团基础架构部/弹性策略团队负责人涂扬在2019 QCon&#xff08;全球软件开发大会&#xff09;上的演讲内容整理而成。本文涉及Kubernetes集群管理技术&#xff0c;美团相关的技术实践可参考此前发布的《美团点评Kubernetes集群管理实践》。 一、背景 HULK是美团的容器…