io多路复用

单个process能够同时处理多个网络链接的IOhtml

参考以下博客:
https://www.cnblogs.com/maociping/p/5129858.html
https://blog.csdn.net/mx472756841/article/details/70145762
 原生socket客户端在与服务端创建链接时,即服务端调用accept方法时是阻塞的,同时服务端和客户端在收发数据(调用recv、send、sendall)时也是阻塞的。原生socket服务端在同一时刻只能处理一个客户端请求,即服务端不能同时与多个客户端进行通讯,实现并发,致使服务端资源闲置(此时服务端只占据 I/O,CPU空闲)。
    如今的需求是:咱们要让多个客户端链接至服务器端,并且服务器端须要处理来自多个客户端请求。很明显,原生socket实现不了这种需求,此时咱们该采用什么方式来处理呢?
    解决方法:采用I/O多路复用机制。在python网络编程中,I/O多路复用机制就是用来解决多个客户端链接请求服务器端而服务器端能正常处理并响应给客户端的一种机制。书面上来讲,就是经过1种机制:能够同时监听多个文件描述符,一旦描述符就绪,可以通知程序进行相应的读写操做。
    I/O多路复用是指:经过一种机制,能够监视多个描述符,一旦某个描述符就绪(通常是读就绪或者写就绪),可以通知程序进行相应的读写操做。python

IO多路复用有些地方也称这种IO方式为事件驱动IO(event driven IO)。咱们都知道,select/epoll的好处就在于单个process就能够同时处理多个网络链接的IO。它的基本原理就是select /epoll这个function会不断的轮询所负责的全部socket,当某个socket有数据到达了,就通知用户进程。编程

I/O多路复用是用于提高效率,单个进程能够同时监听多个网络链接IO
I/O是指Input/Output
I/O多路复用,经过一种机制,能够监视多个文件描述符,一旦描述符就绪(读就绪和写就绪),能通知程序进行相应的读写操做。
I/O多路复用避免阻塞在io上,本来为多进程或多线程来接收多个链接的消息变为单进程或单线程保存多个socket的状态后轮询处理.
import select服务器

import socket网络

import datetime多线程