实例讲解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的Django框架中forms表单类的使用方法详解
Jun 21 Python
深入理解python中的select模块
Apr 23 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
Python中bisect的使用方法
Dec 31 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 Python
小结Python的反射机制
Sep 28 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
用Python提取PDF表格的方法
Apr 11 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
MySQL中create table语句的基本语法是
2007/01/15 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
Node.js插件的正确编写方式
2014/08/03 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
Python3读取文件常用方法实例分析
2015/05/22 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
python写一个md5解密器示例
2018/02/23 Python
Python实现的端口扫描功能示例
2018/04/08 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
印度低票价航空公司:GoAir
2017/10/11 全球购物
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
英文自荐信
2013/12/15 职场文书
干部培训自我鉴定
2014/01/22 职场文书
小学生作文评语大全
2014/04/21 职场文书
师范毕业生求职信
2014/07/11 职场文书
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android