实例讲解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翻译软件实现代码(使用google api完成)
Nov 26 Python
python实现自动重启本程序的方法
Jul 09 Python
Python实现批量压缩图片
Jan 25 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 Python
解决python打不开文件(文件不存在)的问题
Feb 18 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
Jul 22 Python
Pandas分组与排序的实现
Jul 23 Python
python 日志模块logging的使用场景及示例
Jan 04 Python
python某漫画app逆向
Mar 31 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
如何去掉文章里的 html 语法
2006/10/09 PHP
PHP define函数的使用说明
2008/08/27 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
javascript操作cookie
2017/01/17 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
2020/09/08 Javascript
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
Python实现网站文件的全备份和差异备份
2014/11/30 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
Python中断多重循环的思路总结
2019/10/04 Python
python导入库的具体方法
2020/06/18 Python
Python-openCV开运算实例
2020/07/05 Python
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
建筑工程管理专业自荐信范文
2013/12/28 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
自我检讨书范文
2015/01/28 职场文书
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
java executor包参数处理功能 
2022/02/15 Java/Android
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL