文章分类 -  python 进阶

摘要:1.自定义type 2. self和cls只是python中约定的写法,本质上只是一个函数参数而已,没有特别含义。 任何对象调用方法都会把把自己作为该方法中的第一个参数,传递到函数中。 3.依赖注入 4.SOLIP 设计原则 1.单一责任原则(SRP) 一个对象应该只对一个元素负责 2.开放封闭原则 阅读全文
posted @ 2017-07-03 23:03 1916 阅读(416) 评论(0) 推荐(0)
摘要:1.递归的方式的实现:效率低,父评论一定要在子评论前面 import collections aaa = collections.OrderedDict() aaa['k1']='v1' aaa['k2']='v2' aaa['k3']='v3' print(aaa) # OrderedDict([ 阅读全文
posted @ 2017-06-13 23:18 1916 阅读(161) 评论(0) 推荐(0)
摘要:一.rabbitmq 安装 详情见:http://www.cnblogs.com/yangh965/p/5862347.html windows: 1.安装Erlang 2.安装rabbitmq 3.安装插件 4.http://127.0.0.1:15672/ 测试 5.添加用户 linux: 二. 阅读全文
posted @ 2017-06-12 10:47 1916 阅读(134) 评论(0) 推荐(0)
摘要:1.协程又称微进程,在多线程进行线程切换时,会有一定的耗时,但是协程是单线程,在一个代码中切换进行,所以没有线程切换的开销,线程数量越多,协程优势越明显 当程序中存在大量不需要CPU的操作时(IO),适用于协程 2.greenlet 协程的基本流程 3.gevent 高级模块,遇到等待自动切换 遇到 阅读全文
posted @ 2017-05-08 23:57 1916 阅读(86) 评论(0) 推荐(0)
摘要:python 中只为我们定了进程池,没有实现进程池,需要我们自己实现 1.简单版的线程池,通过队列来实现 2.高级版线程池 3.上下文管理with 自定义open函数 阅读全文
posted @ 2017-05-08 14:52 1916 阅读(472) 评论(0) 推荐(0)
摘要:1.进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列中没有可供使用的进进程,那么程序就会等待,直到进程池中有可用进程为止。进程池设置最好等于CPU核心数量 进程池的方法 apply(func[, args[, kwds]]) :使用arg和kwds参数调用func函数, 阅读全文
posted @ 2017-05-08 00:23 1916 阅读(114) 评论(0) 推荐(0)
摘要:1.在使用并发设计的时候最好尽可能的避免共享数据,尤其是在使用多进程的时候。 如果你真有需要 要共享数据, multiprocessing提供了两种方式。 一种是,数据可以用Value或Array存储在一个共享内存地图里,如下: 2.第二种,由Manager()返回的manager提供list, d 阅读全文
posted @ 2017-05-07 23:50 1916 阅读(800) 评论(0) 推荐(0)
摘要:1.常见队列 2.Queue 常见方法 3.生产者与消费者 4.multiprocessing是python的多进程管理包,和threading.Thread类似。直接从侧面用subprocesses替换线程使用GIL的方式,由于这一点,multiprocessing模块可以让程序员在给定的机器上充 阅读全文
posted @ 2017-05-07 22:16 1916 阅读(515) 评论(0) 推荐(0)
摘要:Condition(条件变量)通常与一个锁关联。需要在多个Contidion中共享一个锁时,可以传递一个Lock/RLock实例给构造方法,否则它将自己生成一个RLock实例。 可以认为,除了Lock带有的锁定池外,Condition还包含一个等待池,池中的线程处于等待阻塞状态,直到另一个线程调用n 阅读全文
posted @ 2017-05-07 21:45 1916 阅读(144) 评论(0) 推荐(0)
摘要:1.多个线程对同一个数据进行修改时,要进行加锁 2.RLOCK与LOCK区别 3.Event是线程间通信最间的机制之一:一个线程发送一个event信号,其他的线程则等待这个信号。用于主线程控制其他线程的执行。 Events 管理一个flag,这个flag可以使用 set()设置成True或者使用cl 阅读全文
posted @ 2017-05-07 19:55 1916 阅读(194) 评论(0) 推荐(0)
摘要:1.python 有个GIL全局解释器锁,会限制进程,只允许进程里的一个线程与CPU进行交互。 2.一个应用程序可以有一个或多个进程,必须有一个主进程,可以创建多个子进程 3.一个进程里面可以有一个线程或多个线程,必须有一个主线程,可以创建多个子进程 4.Python 与其他语言不同,特有的GIL, 阅读全文
posted @ 2017-05-06 22:56 1916 阅读(100) 评论(0) 推荐(0)
摘要:1. 执行命令 服务端: 客户端 2.FTP上传 +断点上传 服务端 客户端 阅读全文
posted @ 2017-05-05 23:26 1916 阅读(194) 评论(0) 推荐(0)
摘要:1.第一种使用方法 2.第二种使用方法 3.线程常用方法 总结: 1. 这种情况,主线程执行太快,先输出qqq, 如果你要按顺序执行,必须加上 i.join() ,让主线程等待子线程执行完毕后,接着执行 阅读全文
posted @ 2017-05-05 15:55 1916 阅读(115) 评论(0) 推荐(0)
摘要:1.IO多路复用 select(有最大连接数限制),pool(没有最大连接数限制),epool(异步) 服务器端: 客户端: 读写分离,实现伪并发 :服务器端如下,客户端不变 2.上面实现的是一种伪并发的情况,真正要实现多线程并发,需要利用socketserver模块 自定义一个类,继承chenSo 阅读全文
posted @ 2017-05-05 14:05 1916 阅读(134) 评论(0) 推荐(0)
摘要:1.装饰器 (property +方法) 经典类:只有一种@property 装饰器 新式类:具有多种property 装饰器 2.静态字段,property内置函数+方法 ->类中的静态字段,通过对象访问 经典类 新式类 3.经典类与新式类 在2.7中,没有继承object 则是经典类,继承了ob 阅读全文
posted @ 2017-05-04 15:19 1916 阅读(100) 评论(0) 推荐(0)
摘要:1.基于TCP的文件传输 服务端: 客户端: 上述的实验,有可能不成功,会出现粘包的问题,第一次发送的包和第二次发送的包粘在了一起,被缓冲区一起发送过去了 解决方案,在发送包之间进行一次确认交互即可 服务端: 客户端: 阅读全文
posted @ 2017-05-04 10:53 1916 阅读(441) 评论(0) 推荐(0)
摘要:1.常用的函数 2.基于socket的文件传输 阅读全文
posted @ 2017-05-04 09:41 1916 阅读(112) 评论(0) 推荐(0)
摘要:1.基于TCP的流程图 2.基于TCP的通信流程 服务端: 客服端: 3.基于UDP的通信 服务端: 客服端: 阅读全文
posted @ 2017-05-04 08:51 1916 阅读(213) 评论(0) 推荐(0)
摘要:1.单例模式 通过静态字段和静态方法创建,在内存中永远只创建一份实例 阅读全文
posted @ 2017-05-02 11:05 1916 阅读(81) 评论(0) 推荐(0)