1.greenlet定义:  

gevent中使用的主要模式是greenlet,它是一个轻量级协程,作为C扩展模块提供给python, greenlet都是在主程序的操作系统进程内部运行,但都是协同调度的

在任何给定的时间内,只有一个greenlet在运行

2.并发的概念:

       并发是指两个或多个事件在同一时间间隔发生

并发性的核心思想是将一个较大的任务分解为一组子任务,这些子任务被计划为同时或异步运行,而不是一次运行一个或同步运行,简单说就是两个或多个事件在同一时间间隔发生

3.greenlet上下文切换

两个子任务之间的切换称为上下文切换,Greenlet中的上下文切换是通过switch实现的

单个线程内可以运行任意个greenlet协程,不同线程之间不能切换greenlet

4.greenlet代码实例:

from greenlet import greenlet

def fun1(param1,param2):
    print("start fun1")
    z = gr2.switch(param1+param2)  # 切换到协程实例二中执行
    print(z)
    print("end fun1")  # 执行结束,返回主线程

def fun2(param3):
    print("start fun2")
    print(param3)
    gr1.switch(33)  # 切换到协程实例一中执行,传递参数给上一个运行节点
    print("end fun2")  # 不会执行该行代码

if __name__ == "__main__":
    gr1 = greenlet(fun1)  # 协程实例一
    gr2 = greenlet(fun2)  # 协程实例二
    gr1.switch("hello", 'ketty')  # 切换到协程一执行,传入两个参数
    print("end main")

运行结果:

python中的greenlet相关推荐

  1. python中协程实现的本质以及两个封装协程模块greenle、gevent

    协程 协程,又称微线程,纤程.英文名Coroutine. 协程是啥 协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源). 为啥说它是一个执行单元,因为 ...

  2. python如何并发上千个get_用greenlet实现Python中的并发

    在上一篇介绍生成器时,我们讲到了协程(Coroutine),它也被称为微线程.回顾一下,协程可以在一个函数执行过程中将其挂起,去执行另一个函数,并在必要时将之前的函数唤醒.在Python的语言环境里, ...

  3. python中的协程(二)

    协程 1.协程: 单线程实现并发 在应用程序里控制多个任务的切换+保存状态 优点: 应用程序级别速度要远远高于操作系统的切换 缺点: 多个任务一旦有一个阻塞没有切,整个线程都阻塞在原地,该线程内的其他 ...

  4. python中yield使用

    16.yield使用 列表推导与生成器表达式 当我们创建了一个列表的时候,就创建了一个可以迭代的对象: >>> squares=[n*n for n in range(3)] > ...

  5. Python中的协程

    Python中的协程 文章目录 Python中的协程 一.什么是协程 1.概念 2.协程的好处 3.缺点 二.了解协程的过程 1.yield工作原理 2.协程在运行过程中有四个状态: 3.预激协程的装 ...

  6. python中IO多路复用、协程

    一.IO多路复用 IO多路复用:检测多个socket是否已经发生变化(是否已经连接成功/是否已经获取数据)(可读/可写) import socket def get_data(key):client ...

  7. python中文文档-Python语言、主要工具与类库中文文档

    Python是Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python 提供了非常完善的基础代码库,覆盖了网络.文件.GUI.数据库.文本等大量 ...

  8. python中doc=parased.getroot()_python实例手册.py

    python实例手册 #encoding:utf8 # 设定编码-支持中文 0 说明 手册制作: 雪松 littlepy www.51reboot.com 更新日期: 2016-01-21 欢迎系统运 ...

  9. python多线程好还是多协程好_深入浅析python中的多进程、多线程、协程

    进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...

最新文章

  1. css垂直居中问题~
  2. 从数据中心三大趋势看如何做布线规划
  3. android studio 中 .9.png的制作
  4. 【Python Flask】SQLAlchemy增删改查总结;不重复查询某一列
  5. 一个有趣的问题, 你知道SqlDataAdapter中的Fill是怎么实现的吗
  6. 最新Hadoop环境搭建流程
  7. FireMonkey ListView 设计期添加按钮及其 OnClick 事件
  8. 计算机内存不足黑屏怎么办,win10内存不足会黑屏怎么办
  9. 秦殇千年轮回java游戏下载,智云稳定器如何拍旋转画面 使用稳定器拍摄画面方法...
  10. illustrator cs5 2学习笔记
  11. 亚马逊的人工智能Alexa竟然独自大笑 笑声很吓人(附视频)
  12. Hive中4个By Sort By 、Order By、Distrbute By、 Cluster By区别
  13. 外科手术器械设计 超声刀设计思路和原理 - 02
  14. 程序猿必备的数电知识之(逻辑代数基础后半篇)
  15. 配置 CentOS 7 man 命令帮助显示简体中文
  16. 在上海软件行业,我见到的年入50万的众生相——我们该如何努力从而达到这个目标...
  17. HTML页面、CSS样式的以及js学习与介绍
  18. 【十】搭建基于qemu的仿真环境与应用
  19. Excel Charting Utility赠品
  20. 踩坑记录 PIL与Opencv读取图像的差别

热门文章

  1. 腾讯叶聪:朋友圈爆款背后的计算机视觉技术与应用
  2. 有i标签i/i不能对齐
  3. python技术简介_Python简介
  4. KVM之libvirt 介绍
  5. springboot实现长链接转短链接
  6. 使用批处理文件(.bat)批量在文件名前面加序号(递增)
  7. 故障管理系统,如何使用二维码报修
  8. SATA 3.0 中 6GB/s = 600Mb/s ,怎么来的?
  9. 自动驾驶(七十九)---------Apollo之定位模块
  10. 基于asp.net823驴友信息平台旅游网站