实例讲解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实现绘制树枝简单示例
Jul 24 Python
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
Python远程桌面协议RDPY安装使用介绍
Apr 15 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
Python从使用线程到使用async/await的深入讲解
Sep 16 Python
Python OpenCV读取png图像转成jpg图像存储的方法
Oct 28 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
如何用Python来搭建一个简单的推荐系统
Aug 07 Python
Python列表操作方法详解
Feb 09 Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 Python
python中str内置函数用法总结
Dec 27 Python
Python爬取某平台短视频的方法
Feb 08 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
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
PHP代码加密的方法总结
2020/03/13 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
Dom 结点创建 基础知识
2011/10/01 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
对于Python的Django框架部署的一些建议
2015/04/09 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
后勤园长自我鉴定
2013/10/17 职场文书
物理系毕业生自荐信
2013/11/01 职场文书
残疾人创业典型事迹
2014/02/01 职场文书
业务员简历自我评价
2014/03/06 职场文书
高中生职业规划范文
2014/03/09 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
医生个人年度总结
2015/02/28 职场文书
企业工会工作总结2015
2015/05/13 职场文书