一、小知识点(作用域) 进入主题之前先分享一个有关某公司一道python自动化的面试题: 首先说一下作用域的关系,如以下案例: 看以上代码你觉得会打印出来"tom"吗? 答案是:会的。 这个地方需要了解的是,在Java、c#是有块级作用域的,不会打印出来。在python中无块级作用域可以会被执行 既 ...
分类:
编程语言 时间:
2016-07-15 20:40:36
阅读次数:
370
本博文主要针对UNP一书中的第六章内容来聊聊I/O复用技术以及其在网络编程中的实现
1. I/O复用技术I/O多路复用是指内核一旦发现进程指定的一个或者多个I/O条件准备就绪,它就通知该进程。I/O复用适用于以下场合:(1) 当客户处理多个描述符(一般是交互式输入或网络套接字),必须适用I/O复用(2) 当一个客户处理多个套接字时,这种情况很少见,但也可能出现(3) 当一个TCP服务器既要处理监听套...
分类:
其他好文 时间:
2016-07-14 15:27:41
阅读次数:
231
1.I/O基础知识 1.1 什么是文件描述符? 在网络中,一个socket对象就是1个文件描述符,在文件中,1个文件句柄(即file对象)就是1个文件描述符。其实可以理解为就是一个“指针”或“句柄”,指向1个socket或file对象,当file或socket发生改变时,这个对象对应的文件描述符,也 ...
分类:
编程语言 时间:
2016-07-12 11:54:54
阅读次数:
224
进程、线程的并发 本文是自己学习经验总结,有不正确的地方,请批评指正。 总结一下这一段时间来,有关网络编程的学习。我是从csapp的最后章节的Tiny HTTP服务器开始,以它为基础,改用不同的方式实现并发,包括进程、线程、线程池、I/O多路复用。所有代码见地址:https://github.com ...
分类:
编程语言 时间:
2016-07-12 10:16:58
阅读次数:
258
三个多路复用模型的概念 select select 原理 select 是通过系统调用来监视着一个由多个文件描述符(file descriptor)组成的数组,当select()返回后,数组中就绪的文件描述符会被内核修改标记位(其实就是一个整数),使得进程可以获得这些文件描述符从而进行后续的读写操作 ...
分类:
编程语言 时间:
2016-07-11 23:44:40
阅读次数:
233
内容目录: python作用域 python2.7和python3.5的多继承区别 IO多路复用 多线程、进程、协程 python作用域 python中无块级作用域 python中以函数为作用域 python作用域链由内想外找,直到找不到报错 函数执行前,作用域(链)已经确定 lambda函数作用域 ...
分类:
编程语言 时间:
2016-07-11 21:16:25
阅读次数:
473
python IO多路复用 一、多路复用概念: 监听多个描述符(文件描述符(windows下暂不支持)、网络描述符)的状态,如果描述符状态改变 则会被内核修改标志位,进而被进程获取进而进行读写操作 二、多路复用两种触发方式: 将就绪的文件描述符告诉进程后,如果进程没有对其进行IO操作,那么下次调用s ...
分类:
编程语言 时间:
2016-07-11 13:50:28
阅读次数:
303
典型应用于以下场合 1.处理多个描述字时,比如同时处理套接字和磁盘IO、终端IO 2.一个客户同时处理多个套接字 3.服务器既要处理监听套接字,又要处理已连接套接字 4.既要处理TCP、也要处理UDP 5.一个服务器要处理多个服务和协议 I/O多路复用不局限于网络编程,也可以用于其他程序。 UNIX ...
分类:
其他好文 时间:
2016-07-11 01:01:58
阅读次数:
149
1.socket 模块 流程图 单线程,过程类似打电话 server端 client端 2socketserver 实现支持多客户端 上述ssh模拟客户端只能支持一定数量的客户端,受s.listen(0)参数限制。下面可以实现支持多客户端操作 SocketServer内部使用 IO多路复用 以及 “ ...
分类:
其他好文 时间:
2016-07-09 10:39:24
阅读次数:
174
Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。 然后为这个 socket 设置 ...
分类:
其他好文 时间:
2016-07-07 23:53:26
阅读次数:
129