实例讲解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 相关文章推荐
ptyhon实现sitemap生成示例
Mar 30 Python
Python实现的二维码生成小软件
Jul 11 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
Python实现冒泡排序的简单应用示例
Dec 11 Python
Python数据拟合与广义线性回归算法学习
Dec 22 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
Python 实现删除某路径下文件及文件夹的实例讲解
Apr 24 Python
pyshp创建shp点文件的方法
Dec 31 Python
Python调用钉钉自定义机器人的实现
Jan 03 Python
PyCharm 光标变成黑块的解决方式
Feb 06 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 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将csv文件导入到mysql数据库的方法
2014/12/24 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
javascript 多级checkbox选择效果
2009/08/20 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
Python连接phoenix的方法示例
2017/09/29 Python
Python异常处理例题整理
2019/07/07 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
如何利用Python写个坦克大战
2020/11/18 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
特色蛋糕店创业计划书
2014/01/28 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
《学会合作》教学反思
2014/04/12 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
Python何绘制带有背景色块的折线图
2022/04/23 Python