实例讲解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 解析XML文件
Apr 15 Python
python连接池实现示例程序
Nov 26 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
Python之循环结构
Jan 15 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
Python for循环与range函数的使用详解
Mar 23 Python
python中time、datetime模块的使用
Dec 14 Python
python用分数表示矩阵的方法实例
Jan 11 Python
利用Python过滤相似文本的简单方法示例
Feb 03 Python
Python 如何安装Selenium
May 06 Python
使用numpy实现矩阵的翻转(flip)与旋转
Jun 03 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
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
php 代码优化的42条建议 推荐
2009/09/25 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
js判断变量是否未定义的代码
2020/03/28 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
浅析javascript函数表达式
2016/02/10 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
PHP webshell检查工具 python实现代码
2009/09/15 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
python实现马丁策略的实例详解
2021/01/15 Python
简述数组与指针的区别
2014/01/02 面试题
瀑布模型都有哪些优缺点
2014/06/23 面试题
产品质量承诺书范文
2014/03/27 职场文书
客户答谢会活动方案
2014/08/31 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
竞选学委演讲稿
2014/09/13 职场文书
幼儿园教师岗位职责
2015/04/02 职场文书
医者仁心观后感
2015/06/17 职场文书
运动会通讯稿200字
2015/07/20 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL