一丶socketserver模块 SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端。即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进 程” 专门负责处理当前客户端的所有请求 ...
分类:
其他好文 时间:
2017-09-04 18:58:03
阅读次数:
185
SocketServer模块 内部使用 IO 多路复用以及'多线程'和'多进程',从而实现并发处理多个客户端请求的 socket 服务端.讲人话就是:每个客户端请求连接到服务器时, socket 服务端都在会服务器中创建一个线程或者进程,来专门处理当前客户端的所有请求. 其实这个模块就是基于 tcp ...
分类:
其他好文 时间:
2017-09-04 18:56:24
阅读次数:
147
水滴石穿 IO 同步阻塞,在未得到服务端数据前会处于等待状态,直接面向IO流 实现方式:一个请求一个线程 NIO 同步非阻塞,不需要返回结果,面向缓冲区(其实只是更改了阻塞的位置) 实现方式:服务端的多路复用机制,轮询机制。 在IO多路复用模型中,事件循环将文件句柄的状态事件通知给用户线程, 由用户 ...
分类:
其他好文 时间:
2017-09-04 18:52:47
阅读次数:
148
一 IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能 ...
分类:
编程语言 时间:
2017-09-03 01:12:12
阅读次数:
703
1 基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文 ...
分类:
其他好文 时间:
2017-09-02 19:05:54
阅读次数:
200
在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待,从而使得请求整体变慢。 1. 同步执行 2. 多线程执行(多个线程并发执行,时间长短取决于最长的URL请求) 3. 多进程执行(在CPU核心数足够的情况下,多个进程并行执行,时间长短取决于最长的URL请求,理论 ...
分类:
其他好文 时间:
2017-09-01 22:20:31
阅读次数:
221
服务端 from socket import * import time import select server = socket(AF_INET,SOCK_STREAM) server.bind(('127.0.0.1',8081)) server.listen(3) server.setblo... ...
分类:
其他好文 时间:
2017-09-01 19:42:32
阅读次数:
107
对于异步IO请求的本质则是【非阻塞Socket】+【IO多路复用】,那我们是否可以自定义异步IO模块? 自定义一个插件,模块如下: import socket import select class Request(object): """ select监听的是有变化的对象,当多个socket通信存 ...
分类:
其他好文 时间:
2017-08-31 19:16:43
阅读次数:
116
OSI七层与TCP/IP五层网络架构详解 TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。 作者 ...
分类:
其他好文 时间:
2017-08-20 10:17:14
阅读次数:
122
1, 必须在非阻塞模式下,才能实现IO的多路复用,否则一个卡住就都卡住了。 先检测自己,现在没有客户端连进来,所以会卡住。 运行结果: 2. 客户端代码: 服务器端: 运行结果:fd=240 文件描述符 3. 客户端: 运行结果: 至此链接已经建立。 4. ...
分类:
其他好文 时间:
2017-08-17 22:52:57
阅读次数:
277