随笔分类 - Python
摘要:一、描述符 在 面向对象 编程中 定义一个(没有定义方法)类:class person , 在这个类里面,有name,age, heigth, weight,等等属性, 这个类就可以看作一个对 person 的描述符,而具体的实例则是具体的“被描述物”。 而在python中,描述符本质就是一个新式类
阅读全文
摘要:一、协程 协程,又称微线程,纤程。英文名Coroutine。 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用。 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。 所以子程序调用是
阅读全文
摘要:一、几个重要概念 二、unittest测试流程 一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是
阅读全文
摘要:简介 Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqueue方法(freeBSD系统)。 select方法 进程指定内核监听哪些文件描述符(最多监听1024个f
阅读全文
摘要:一、nametuple--factory function for creating tuple subclasses with named fields 创建类似于元祖的数据类型,除了能够用索引来访问数据,能够迭代,更能够方便的通过属性名来访问数据。 示例: 但是,它又保持着元组元素的不可变型!
阅读全文
摘要:在解析socketserver是如工作之前,我们先看看socektserver类的继承关系图: 请求类继承关系: server类继承关系: 有了上面的继承关系图后,我们解析socketserver就轻松多了,下面,我们从代码开始,慢慢揭开socketserver面纱: 我们通过socketserve
阅读全文
摘要:本文转自:(英文版)https://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python (翻译版) http://python.jobbole.com/21351/ 以下代码测试环境为ptyon2.7 类也是对象 在理解元
阅读全文
摘要:1.装饰类 下面,直接来看代码是如何实现装饰类的: 在decorator中,我们返回了一个新类newClass。在新类中,我们记录了原来类生成的对象(self.wrapped),并附加了新的属性total_display,用于记录调用display的次数。我们也同时更改了display方法。 通过修
阅读全文
摘要:由于GIL(全局解释锁)的问题,多线程并不能充分利用多核处理器,如果是一个CPU计算型的任务,应该使用多进程模块 multiprocessing 。它的工作方式与线程库完全不同,但是两种库的语法和接口却非常相似。multiprocessing给每个进程赋予单独的Python解释器,这样就规避了全局解
阅读全文
摘要:Python作为一种解释型语言,由于使用了全局解释锁(GIL)的原因,其代码不能同时在多核CPU上并发的运行。这也导致在Python中使用多线程编程并不能实现并发,我们得使用其他的方法在Python中实现并发编程。 一、全局解释锁(GIL) Python中不能通过使用多线程实现并发编程主要是因为全局
阅读全文
摘要:select,poll,epoll都是IO多路复用的机制。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写
阅读全文
摘要:1.SocketServer模块编写的TCP服务器端代码 Socketserver原理图 服务端: 客户端: 2.基于Python Socketserver的实现的FTP程序 服务端: 客户端:
阅读全文
摘要:一、 概念说明 在进行解释之前,首先要说明几个概念: 用户空间和内核空间 进程切换 进程的阻塞 文件描述符 缓存 I/O 同步(Sync)/异步(Async) 阻塞(Block)/非阻塞(Unblock) 对象的阻塞模式和阻塞函数调用 1.用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对3
阅读全文
摘要:1.socket介绍 我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可
阅读全文
摘要:一、__slots__ 当我们的程序要创建大量(可能上百万)的对象,这将会导致占用很大的内存。对于主要是用来当成简单的数据结构的类而言,你可以通过给类添加 __slots__ 属性来极大的减少实例所占的内存。比如: 1.__slots__是什么:是一个类变量,变量值可以是列表,元祖,或者可迭代对象,
阅读全文
摘要:一、isinstance(obj, cls) 检查obj是否是类cls的对象。 二、issubclass(sub, super) 检查sub类是否是 super 类的派生类 三、__setattr__,__getattr__,__delattr__ 上述三个函数,具体如何使用,请看代码: __set
阅读全文
摘要:类中的方法有两类: 绑定方法 非绑定方法 绑定方法 非绑定方法 一、绑定方法 1.对象的绑定方法 首先我们明确一个知识点,凡是类中的方法或函数,默认情况下都是绑定给对象使用的。下面,我们通过实例,来慢慢解析绑定方法的应用。 从上面的输出结果来看,talk()這个类中的方法,是绑定给对象使用的。下面,
阅读全文
摘要:yield与send实现协程操作 之前我们说过,在函数内部含有yield语句即称为生成器。 下面,我们来看看在函数内部含有yield语句达到的效果。首先,我们来看看以下代码: 我们都知道,程序一旦执行到yield就会停在该处,并且将其返回值进行返回。上面的例子中,我们并没有设置返回值,所有默认程序返
阅读全文
摘要:本文讲述了以下几个方面: 1.何为迭代,何为可迭代对象,何为生成器,何为迭代器? 2.可迭代对象与迭代器之间的区别 3.生成器内部原理解析,for循环迭代内部原理解析 4.可迭代对象,迭代器,生成器,生成器函数之间关系 1.迭代 要搞清楚什么关于迭代器,生成器,可迭代对象,前提是我们要理解何为迭代。
阅读全文

浙公网安备 33010602011771号