实例讲解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基础教程之类class定义使用方法
Feb 20 Python
python获取局域网占带宽最大3个ip的方法
Jul 09 Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 Python
python实现简易版计算器
Jun 22 Python
Python处理中文标点符号大集合
May 14 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
详解python中的index函数用法
Aug 06 Python
python 图像的离散傅立叶变换实例
Jan 02 Python
flask框架url与重定向操作实例详解
Jan 25 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
 Python 中 logging 模块使用详情
Mar 03 Python
Matplotlib绘制条形图的方法你知道吗
Mar 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不用递归实现无限分级的例子分享
2014/04/18 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
JS创建自定义表格具体实现
2014/02/11 Javascript
js表头排序实现方法
2015/01/16 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
js实现随机数小游戏
2019/06/28 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
python实现彩色图转换成灰度图
2019/01/15 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
jQuery treeview树形结构应用
2021/03/24 jQuery
档案管理员岗位职责
2013/12/01 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
西安导游词
2015/02/12 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
python使用shell脚本创建kafka连接器
2022/04/29 Python