实例讲解python中的协程


Posted in Python onOctober 08, 2018

python协程

线程和进程的操作是由程序触发系统接口,最后的执行者是系统;协程的操作则是程序员。

协程存在的意义:对于多线程应用,CPU通过切片的方式来切换线程间的执行,线程切换时需要耗时(保存状态,下次继续)。协程,则只使用一个线程,在一个线程中规定某个代码块执行顺序。

协程的适用场景:当程序中存在大量不需要CPU的操作时(IO),适用于协程;

event loop是协程执行的控制点, 如果你希望执行协程, 就需要用到它们。

event loop提供了如下的特性:

注册、执行、取消延时调用(异步函数)

创建用于通信的client和server协议(工具)

创建和别的程序通信的子进程和协议(工具)

把函数调用送入线程池中

下面我们来举个例子:

协程实例

import asyncio
 
asyncdef cor1():
  print("COR1 start")
  await
  cor2()
  print("COR1 end")
   
asyncdef cor2():
  print("COR2")
   
loop = asyncio.get_event_loop()
loop.run_until_complete(cor1())
loop.close()

最后三行是重点。

asyncio.get_event_loop() : asyncio启动默认的event loop

run_until_complete() : 这个函数是阻塞执行的,知道所有的异步函数执行完成,

close() : 关闭event loop。

以上就是本篇文章所讲述的所有内容,这篇文章主要介绍了python协程的相关知识,希望你能借助资料从而理解上述所说的内容。希望我在这片文章所讲述的内容能够对你有所帮助,让你学习python更加轻松。

Python 相关文章推荐
Python实现partial改变方法默认参数
Aug 18 Python
Python自动化构建工具scons使用入门笔记
Mar 10 Python
Python pickle模块用法实例
Apr 14 Python
一道python走迷宫算法题
Jan 22 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
详解PyTorch中Tensor的高阶操作
Aug 18 Python
python基于plotly实现画饼状图代码实例
Dec 16 Python
python中列表的含义及用法
May 26 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
pandas针对excel处理的实现
Jan 15 Python
详解python分布式进程
Oct 08 #Python
python中多个装饰器的执行顺序详解
Oct 08 #Python
使用EduBlock轻松学习Python编程
Oct 08 #Python
Django forms组件的使用教程
Oct 08 #Python
详解关于Django中ORM数据库迁移的配置
Oct 08 #Python
面向初学者的Python编辑器Mu
Oct 08 #Python
Django 实现购物车功能的示例代码
Oct 08 #Python
You might like
php中static静态变量的使用方法详解
2010/06/04 PHP
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
PHP查询网站的PR值
2013/10/30 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
JS 的应用开发初探(mootools)
2009/12/19 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
js实现select下拉框菜单
2015/12/08 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
JavaScript 巧学巧用
2017/05/23 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
浅谈Python中函数的参数传递
2016/06/21 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
Python 监测文件是否更新的方法
2019/06/10 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
放假通知范文
2015/04/14 职场文书
公司欠款证明
2015/06/24 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
公司酒会致辞
2015/07/30 职场文书
小学大队长竞选稿
2015/11/20 职场文书
小程序实现筛子抽奖
2021/05/26 Javascript