随笔分类 -  python2.7

除非特殊注明,代码测试均在python2.7通过
摘要:在前文已经介绍过了gevent的调度流程,本文介绍gevent一些重要的模块,包括Timeout,Event\AsynResult, Semphore, socket patch,这些模块都涉及当前协程与hub的切换。本文分析的gevent版本为1.2 Timeout 这个类在gevent.time 阅读全文
posted @ 2017-02-13 18:37 xybaby 阅读(3355) 评论(0) 推荐(0) 编辑
摘要:在前面的文章曾介绍过gunicorn的syncworker,本文介绍其中一种asyncworker:GeventWorker。类图如下: 可见GeventWorker重载了init_process(这个方法是Worker唯一暴露给外界的接口),源码如下: 1 def init_process(sel 阅读全文
posted @ 2017-02-10 09:18 xybaby 阅读(4568) 评论(0) 推荐(1) 编辑
摘要:gevent是目前应用非常广泛的网络库,高效的轮询IO库libev加上greenlet实现的协程(coroutine),使得gevent的性能非常出色,尤其是在web应用中。本文介绍gevent的调度流程,主要包括gevent对greenlet的封装和使用,以及greenlet与libev的协作。阅 阅读全文
posted @ 2017-02-07 15:19 xybaby 阅读(15014) 评论(3) 推荐(6) 编辑
摘要:如果一个函数直接或者间接调用了自己,那么就形成了递归(recursion),比如斐波那契数列的一个实现 def fib(n): if n <= 2: return 1 else: return fib(n - 1) + fib(n - 2) 递归一定要有结束条件,否则就形成了死循环, 比如下面的例子 阅读全文
posted @ 2017-01-27 14:47 xybaby 阅读(5767) 评论(0) 推荐(2) 编辑
摘要:在前面的文章中提到python原生的generator是semicoroutine,而greenlet是 真 协程。本文内容主要来自对官网文档的翻译,在其中也加入了很多自己的理解和例子。主要包括以下内容:什么是greenlet,greenlet的切换与函数调用的区别,greenlet的生命周期,以及 阅读全文
posted @ 2017-01-22 21:07 xybaby 阅读(22818) 评论(1) 推荐(11) 编辑
摘要:本文主要介绍python中Enhanced generator即coroutine相关内容,包括基本语法、使用场景、注意事项,以及与其他语言协程实现的异同。 enhanced generator 在上文介绍了yield和generator的使用场景和主意事项,只用到了generator的next方法 阅读全文
posted @ 2017-01-22 09:11 xybaby 阅读(3253) 评论(0) 推荐(3) 编辑
摘要:本文将由浅入深详细介绍yield以及generator,包括以下内容:什么generator,生成generator的方法,generator的特点,generator基础及高级应用场景,generator使用中的注意事项。本文不包括enhanced generator即pep342相关内容,这部分 阅读全文
posted @ 2017-01-21 21:18 xybaby 阅读(22682) 评论(5) 推荐(20) 编辑
摘要:gunicorn是一个python Wsgi http server,只支持在Unix系统上运行,来源于Ruby的unicorn项目。Gunicorn使用prefork master-worker模型(在gunicorn中,master被称为arbiter),能够与各种wsgi web框架协作。gu 阅读全文
posted @ 2017-01-19 23:02 xybaby 阅读(49565) 评论(2) 推荐(3) 编辑
摘要:bottle 是一个轻量级的python web框架, 可以适配各种web服务器,包括python自带的wsgiref(默认),gevent, cherrypy,gunicorn等等。bottle是单文件形式发布,源码在这里可以下载,代码量不多,可以用来学习web框架。这里也有官方文档的中文翻译。 阅读全文
posted @ 2017-01-19 14:14 xybaby 阅读(25405) 评论(1) 推荐(6) 编辑
摘要:wsgi全称是"Web Server Gateway Interfacfe",web服务器网关接口,wsgi在python2.5中加入,是web服务器和web应用的标准接口,任何实现了该接口的web服务器和web应用都能无缝协作。来看一个形象点的图: 如上图所示(图片来自这里),wsgi一端连接we 阅读全文
posted @ 2017-01-18 22:53 xybaby 阅读(6576) 评论(0) 推荐(2) 编辑
摘要:在之前的文章有提到__getattr__函数的作用: 如果属性查找(attribute lookup)在实例以及对应的类中(通过__dict__)失败, 那么会调用到类的__getattr__函数, 如果没有定义这个函数,那么抛出AttributeError异常。由此可见,__getattr__一定 阅读全文
posted @ 2017-01-12 23:35 xybaby 阅读(48380) 评论(0) 推荐(9) 编辑
摘要:filter(function, iterable): Construct a list from those elements of iterable for which function returns true. 对iterable中的item依次执行function(item),将执行结果为 阅读全文
posted @ 2017-01-12 13:10 xybaby 阅读(1164) 评论(0) 推荐(0) 编辑
摘要:上一篇文章开始的时候提到 “一般来说,装饰器是一个函数,接受一个函数(或者类)作为参数,返回值也是也是一个函数(或者参数)” 有一般情况,就有特殊情况。第一种特殊情况:装饰器可能也是一个类;第二种特殊情况:装饰器返回的对象的类型不一定等同于被装饰对象的类型。 对于第一种情况,我们知道对于任何call 阅读全文
posted @ 2017-01-11 21:26 xybaby 阅读(490) 评论(0) 推荐(0) 编辑
摘要:一般来说,装饰器是一个函数,接受一个函数(或者类)作为参数,返回值也是也是一个函数(或者类)。首先来看一个简单的例子: 1 # -*- coding: utf-8 -*- 2 def log_cost_time(func): 3 def wrapped(*args, **kwargs): 4 imp 阅读全文
posted @ 2017-01-11 21:24 xybaby 阅读(1916) 评论(0) 推荐(0) 编辑
摘要:在Python中,属性查找(attribute lookup)是比较复杂的,特别是涉及到描述符descriptor的时候。 在上一文章末尾,给出了一段代码,就涉及到descriptor与attribute lookup的问题。而get系列函数(__get__, __getattr__, __geta 阅读全文
posted @ 2017-01-10 19:34 xybaby 阅读(16640) 评论(3) 推荐(11) 编辑
摘要:descriptor简介 在python中,如果一个新式类定义了__get__, __set__, __delete__方法中的一个或者多个,那么称之为descriptor。descriptor有分为data descriptor与non-data descriptor, descriptor通常用 阅读全文
posted @ 2017-01-09 21:53 xybaby 阅读(6742) 评论(0) 推荐(3) 编辑
摘要:python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们的代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) Return True if any element of the iterable is true. 阅读全文
posted @ 2017-01-07 17:24 xybaby 阅读(1801) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示