码迷,mamicode.com
首页 > 其他好文 > 详细

Gevent

时间:2017-11-04 11:10:07      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:并发   控制   应用   width   使用   概念   算法   物理   logs   

Gevent

特点:
	是一个基于libev的并发库 它为各种并发和网络相关的任务提供了整洁的API
	基于libev的高效时间循环
	基于greenlet的轻量级执行单元
	重用Python标准库API内容(比如Event Queues)
	socket谢童ssl
	利用线程池或者c-cares来执行DNS查询

a. 进程 线程 协程

进程:
    概念: 进程是正在运行程序的实例
    特点: 具有独立地址空间 是操作系统资源分配的基本单元
    进程上下文: 进程的物理实体与支持进程运行的物理环境,包括:地址空间 系统栈 打开文件表 。。。
    上下文切换: 由一个进程的上下文转到另一个进程的上下文
    系统开销: 运行操作系统程序完成系统管理工作所话费的时间和空间
    一个进程可以包括多个线程

线程:
	- 线程是程序执行的最小单位
	- 多线程的优点: 提高程序的并发性
协程:
	- 协程可以认为是一种用户态的线程,与系统提供的线程不同点是 他需要主动让出cpu时间,而不是由系统进行调度,即控制权在程序员手上。

优缺点:
	- 进程创建销毁成本高
	- 线程开销比进程低,但切换成本高,线程间同步变复杂。
	- 协程不陷入内核的情况进行上下文切换,没有同步问题,但需要手动切换。

下图解释:
    进程是有状态的 刚启动时就绪态,如果进程调度算法调度到这个进程 就会变成执行态。
    分配的算法是有时间片的 当时间片使用完 会继续切回就绪态
    如果时间片没有使用完 当有IO发生就会阻塞态 阻塞完成 继续切回用户态

技术分享

 

b. 阻塞 非阻塞

connect 阻塞做的操作
	客户端和服务端做交互的时候,客户端连接服务器,connect时候阻塞会自动打开,会向服务端发送一个序列号,服务端接受后处于阻塞。

技术分享

数据接受阻塞
	应用层recvfrom调用过程中会发生一个系统调用。系统调用会陷入内核里面。如果没有数据准备好,会等待数据直到数据准备好,内核得到数据把数据复制到用户空间,在返回。

技术分享

 

  

Gevent

标签:并发   控制   应用   width   使用   概念   算法   物理   logs   

原文地址:http://www.cnblogs.com/oyoui/p/7781505.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!