实例讲解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 01 Python
将Python的Django框架与认证系统整合的方法
Jul 24 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
Python线程下使用锁的技巧分享
Sep 13 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
使用Python实现正态分布、正态分布采样
Nov 20 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
Python如何实现在字符串里嵌入双引号或者单引号
Mar 02 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 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中的常用魔术方法总结
2013/08/02 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
php实现图片压缩处理
2020/09/09 PHP
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
python实现扫描日志关键字的示例
2018/04/28 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
python实现超市商品销售管理系统
2019/10/25 Python
python 负数取模运算实例
2020/06/03 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
python db类用法说明
2020/07/07 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
文员个人的求职信范文
2013/09/26 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
PHP控制循环操作的时间
2021/04/01 PHP
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫