摘要: IO多路复用(select、poll、epoll)介绍及select、epoll的实现 IO多路复用中包括 select、pool、epoll,这些都属于同步,还不属于异步 一、IO多路复用介绍 1、select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来 阅读全文
posted @ 2017-10-30 23:02 Wilson_Blogs 阅读(4861) 评论(1) 推荐(2) 编辑
摘要: 事件驱动介绍 一、前言 通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求; (2)每收到一个请求,创建一个新的线程,来处理该请求; (3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求 上面的几种方式,各有千秋, 第 阅读全文
posted @ 2017-10-17 20:57 Wilson_Blogs 阅读(1271) 评论(0) 推荐(2) 编辑
摘要: 协程介绍及基本示例 协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是协程:协程是一种用户态的轻量级线程。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此: 协程能保留上一次调用时的状态(即所有局 阅读全文
posted @ 2017-10-16 21:52 Wilson_Blogs 阅读(1585) 评论(0) 推荐(0) 编辑
摘要: 多进程 进程之间是相互独立的,python是启动进程的时候,是启动的是原生进程。进程是没有GIL锁的,而且不存在锁的概念,进程之间的数据式不能共享的,而线程是可以的。 1、进程的定义 用muliprocessing这个包中的Process来定义多进程,跟定义多线程类似 2、进程中加入线程 3、父子进 阅读全文
posted @ 2017-10-12 15:53 Wilson_Blogs 阅读(3558) 评论(0) 推荐(0) 编辑
摘要: 队列(Queue) 在多个线程之间安全的交换数据信息,队列在多线程编程中特别有用 队列的好处: 一、队列的类型: 1、lass queue.Queue(maxsize=0) 先进先出,后进后出 2、class queue.LifoQueue(maxsize=0) 是先进后出,后进新出规则,last 阅读全文
posted @ 2017-10-10 10:51 Wilson_Blogs 阅读(4544) 评论(0) 推荐(1) 编辑
摘要: 信号量(Semaphore) 之前讲的线程锁(互斥锁) 同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据 ,比如厕所有3个坑,那最多只允许3个人上厕所,后面的人只能等里面有人出来了才能再进去。 1、信号量 说白了就是在同一时间,可以只允许设定的数量的线程去执行 上面程 阅读全文
posted @ 2017-09-28 14:39 Wilson_Blogs 阅读(2493) 评论(0) 推荐(0) 编辑
摘要: GIL锁 计算机有4核,代表着同一时间,可以干4个任务。如果单核cpu的话,我启动10个线程,我看上去也是并发的,因为是执行了上下文的切换,让看上去是并发的。但是单核永远肯定时串行的,它肯定是串行的,cpu真正执行的时候,因为一会执行1,一会执行2.。。。。正常的线程就是这个样子的。但是,在pyth 阅读全文
posted @ 2017-09-27 16:24 Wilson_Blogs 阅读(3484) 评论(0) 推荐(1) 编辑
摘要: 继承式多线程 1、定义 继承式多线程是自己自定义类,去继承theading.Tread这个类,通过类实例.start()启动,去执行run方法中的代码。 2、通过for循环来启动线程 上面的例子只启动了一个2个线程,还是用那种古老的方式t1,t2。要是一下子起10个或者100个线程,这种方式就不适用 阅读全文
posted @ 2017-09-26 12:06 Wilson_Blogs 阅读(1225) 评论(0) 推荐(0) 编辑
摘要: 进程与线程 一、概念 1、简述: 计算机,所有的指令的操作都是有CPU来负责的,cpu是来负责运算的。OS(操作系统) 调度cpu的最小单位就是线程。程序启动后,从内存中分一块空间,把数据临时存在内存中,因为内存比较快,内存比磁盘快,而CPU又比内存还要快很多。进程之前的的内存是不能访问的,默认是要 阅读全文
posted @ 2017-09-08 11:03 Wilson_Blogs 阅读(345) 评论(0) 推荐(0) 编辑
摘要: socketserver SocketServer服务端内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求。即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进 程” 专门负责处理当前客户端的所有请求。 一、sockets 阅读全文
posted @ 2017-09-06 11:14 Wilson_Blogs 阅读(784) 评论(0) 推荐(0) 编辑