摘要:1、单元测试框架 django-unittest https://docs.djangoproject.com/en/1.9/topics/testing/overview/#speeding-up-the-tests 自动生成测试数据库时候,要注意编码问题,特别是数据库中存储了汉字信息。 需要在
阅读全文
摘要:https://segmentfault.com/a/1190000002400160 https://segmentfault.com/a/1190000000616798
阅读全文
摘要:构建高性能Django站点性能可用伸缩扩展安全build1、审慎引入第三方库(是否活跃、是否带入query、是否容易缓存)2、db:减少query次数 减少耗时query 减小返回集 缓存查询结果 johnny.cache 读写分离3、模板:俄罗斯套娃式缓存4、耗时操作异步...
阅读全文
摘要:一、定义 tornado是一个异步非阻塞模型的服务器(tcp/http)、web框架。二、特性1、高并发 原因:其一,网络事件循环部分根据操作系统选择最高效的,如Linux会是epoll; 其二,框架本身是异步的,用add_timeout代替sleep,AsyncHttpClient代替...
阅读全文
摘要:一、对外数据接口三者作为web框架,都是通过url映射对外的接口flask:以decorator的形式,映射到函数中django:以字典形式,映射到函数tornado: 以字典形式,映射到类中flask的接口散落在整个app文件中,多了的话,稍微不易于管理;django单独集中在url.py文件中,...
阅读全文
摘要:python作为web服务器上的开发语言,一般都是部署在linux上部署方法,先都会在服务器前面增加一个nginx,用它来控制对静态文件的访问;对于动态内容,反向代理到web server制作web server有两种方法,一种是用Python程序编写的web server,比如gevent、tor...
阅读全文
摘要:由于python的内存回收机制不是线程安全的,所以就有了GIL保证每个进程内,同一时刻最多只有一个线程在运行。于是,对于python的多线程来讲,其实同一时刻依然只有一个线程在运行。而且由于线程切换的缘故,多线程的效率还不及单线程。对于不需要进行通信,不需要频繁且高并发量地执行的cpu密集型的任务,...
阅读全文
摘要:python中支持多继承。当用派生类对象调用函数时,如果派生类有定义该函数,那么它就覆盖基类中的函数class X(object): def __init__(self): print('X')class Z(X): def __init__(self): p...
阅读全文
摘要:生成器是generator,就是指带有关键字yield的函数。它与一般函数不同点在于: 1、函数调用返回迭代子iterator,迭代子可以理解为一系列的值>>> def func():... yield 1...>>> a = func()>>> a 2、迭代子每次只能拿到一个值,若想拿...
阅读全文
摘要:_x是一种弱表示,它用在类中的属性或方法,表示是private属性,希望外部使用者不要直接调用它。但它只是暗示,没有任何限制性措施。private属性主要推荐的还是这种方式,因为Python的设计理念有一条 “We are all adults here”__x是会被实现时,会被替换_A__x形式。...
阅读全文
摘要:区别:Lock/RLock/Semaphore 是强调互斥,要么是绝对互斥,要么是一定程度下互斥Condition/Event是强调通信,就是一方要等待另一方的消息/条件Queue是强调先来后到,需要按序做......参考:http://yoyzhou.github.io/blog/2013/02/...
阅读全文
摘要:python性能是个瓶颈,没必要在上面花太多精力。如果在意性能,应当直接换编程语言。优化python的思路:1、数据结构set/list/dict等等要区分清楚用途2、算法不在这里细说,通用思路3、多层循环减少不必要的运算 for i in range(10): x = len(aa) ....
阅读全文
摘要:功能模块化带来可自由组装的便利:使用python的mixin特性装配class ThreadHTTPServer(ThreadingMixin, HTTPServer): pass上面表示1个请求1个线程式的HTTP服务器使用参数式形式进行装配class CGIHTTPServer(HTT...
阅读全文
摘要:1、为何只要通过import request,就能拿到对应的request呢?怎么解决区分请求,区分线程的问题?简而言之,就是通过拿栈顶对象就表示是当前活动的对象但对于多线程,由于栈的数据结构是 {ident: {key: [value, ...]}},所以,在__getattr__内部,隐藏实现通...
阅读全文
摘要:用来为server程序和app/framework程序做连接桥梁的,使server和app/framework各自发展,任意组合上图是python3.4标准库里面,关于wsgiserver的实现。从图中可知,所谓wsgi的server的主要工作是运动tcp进程,解析http协议部分参数;然后交给应用...
阅读全文
摘要:1、函数参数的默认值尽量不要是可变对象python中,一切皆对象。函数也不例外。默认值在函数的func_defaults属性中,如果是默认值可变对象,某次被修改,默认值就会被改变。2、类属性不同于对象属性对象可以访问/修改类属性,而类不可以访问修改对象属性类属性对所有对象而言是唯一共同的,对象属性则...
阅读全文
摘要:一、JSON & Pickle二者都是用来对python对象进行json格式的编码或者解码json跨语言平台;pickle是Python语言特定,编码后的结果其他语言无法使用pickle效率比Json高二、wsgiref主要用来处理与wsgi协议相关内容,包括处理环境变量、处理回应头信息、启动htt...
阅读全文
摘要:1、魔方函数http://www.rafekettler.com/magicmethods.html2、with关键句 class Excutor: def __enter__(self): set things up return t...
阅读全文