实例讲解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使用clear方法清除字典内全部数据实例
Jul 11 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
Mar 19 Python
python去掉空白行的多种实现代码
Mar 19 Python
Python中的Django基本命令实例详解
Jul 15 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
利用rest framework搭建Django API过程解析
Aug 31 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
python 实现rolling和apply函数的向下取值操作
Jun 08 Python
python如何停止递归
Sep 09 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
python中openpyxl和xlsxwriter对Excel的操作方法
Mar 01 Python
python_tkinter事件类型详情
Mar 20 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生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
jQuery hover 延时器实现代码
2011/03/12 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
学习JavaScript设计模式之享元模式
2016/01/18 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
JS实现页面打印功能
2017/03/16 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
python中尾递归用法实例详解
2015/04/28 Python
python简单判断序列是否为空的方法
2015/06/30 Python
python文件操作之批量修改文件后缀名的方法
2018/08/10 Python
python多进程重复加载的解决方式
2019/12/13 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
实习自我鉴定范文
2013/10/30 职场文书
大学生毕业的自我评价分享
2014/01/02 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
建筑节能汇报材料
2014/08/22 职场文书
水电维修专业推荐信
2014/09/06 职场文书
公司合并协议书范本
2014/09/30 职场文书
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫