实例讲解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中list常用操作实例详解
Jun 03 Python
python模块之sys模块和序列化模块(实例讲解)
Sep 13 Python
Python浅复制中对象生存周期实例分析
Apr 02 Python
详谈python3中用for循环删除列表中元素的坑
Apr 19 Python
python实现类之间的方法互相调用
Apr 29 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
详解爬虫被封的问题
Apr 23 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
python数值基础知识浅析
Nov 19 Python
浅谈Python访问MySQL的正确姿势
Jan 07 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
Pytorch上下采样函数--interpolate用法
Jul 07 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去除字符串换行符示例分享
2014/02/13 PHP
PHP中使用file_get_contents post数据代码例子
2015/02/13 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
基于JS判断对象是否是数组
2020/01/10 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
python计算一个序列的平均值的方法
2015/07/11 Python
Python过滤列表用法实例分析
2016/04/29 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
Python多进程fork()函数详解
2019/02/22 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
python 生成器需注意的小问题
2020/09/29 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
python中pyqtgraph知识点总结
2021/01/26 Python
Python 求向量的余弦值操作
2021/03/04 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
电脑销售顾问自荐信
2014/01/29 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
投诉书格式范本
2015/07/02 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
MySQL中order by的执行过程
2022/06/05 MySQL