实例讲解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利用hook技术破解https的实例代码
Mar 25 Python
Python中的生成器和yield详细介绍
Jan 09 Python
Python是编译运行的验证方法
Jan 30 Python
Python json模块使用实例
Apr 11 Python
Python最基本的数据类型以及对元组的介绍
Apr 14 Python
python链接Oracle数据库的方法
Jun 28 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
用python写个自动SSH登录远程服务器的小工具(实例)
Jun 17 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
详解Python流程控制语句
Oct 28 Python
python反扒机制的5种解决方法
Feb 06 Python
python 实现德洛内三角剖分的操作
Apr 22 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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
2015/03/04 Javascript
JavaScript知识点整理
2015/12/09 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
JS检测浏览器开发者工具是否打开的方法详解
2020/10/02 Javascript
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
python如何实现内容写在图片上
2018/03/23 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
碧欧泉美国官网:Biotherm美国
2016/08/31 全球购物
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
同学聚会祝酒词
2015/08/10 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python
go goroutine 怎样进行错误处理
2021/07/16 Golang
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python