打破递归栈的深度限制: 解析一种Python尾递归优化的方法
Python的递归调用栈的深度有限制, 可以通过sys.getrecursionlimit()查看。 尾递归在很多语言中都可以被编译器优化, 基本都是直接复用旧的执行栈, 不用再创建新的栈帧, 原理上其实也很简单, 因为尾递归在本质上看的话递归调用是整个子过程调用的最后执行语句,
Python的递归调用栈的深度有限制, 可以通过sys.getrecursionlimit()查看。 尾递归在很多语言中都可以被编译器优化, 基本都是直接复用旧的执行栈, 不用再创建新的栈帧, 原理上其实也很简单, 因为尾递归在本质上看的话递归调用是整个子过程调用的最后执行语句,
为了响应总菊的要求, 互联网智能电视盒子必须接入牌照方的播控平台, 登陆时必须认证一下, 认证通过才让你接入我们的服务, 否则你就呵呵了。我们有两个接口会代理一下用户的请求, 大致逻辑是: 客户端首先请求接口A, 会把MAC地址带过来, 接口A的handler会做一些校验, 然
Linux里的IO多路复用是有效提高IO效率的技术。主要有select、poll、epoll三种。 selectselect调用的函数接口是: int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exce
协程是用户态内的,或者准确点说是线程内部的一种上下文切换技术,由于协程切换是在用户态下完成的,所以省去了线程切换时频繁出入内核态的资源开销,可以形成一种很高效的协作式并发技术。 这个简短的视频介绍了一些有关协程、并发之类的东西,很有意义。 Coroutines, event lo
##”可迭代对象”与”迭代器” Python中迭代器指的是实现了__iter__协议与next()方法的对象,其中__iter__协议中返回对象自身(self),next()方法每次返回单一元素,直至所有元素遍历结束,抛出’StopIteration’异常结束。 可迭代对象是一种
客户端提出搞一个日志上传的接口,方便向服务端提交日志,研究了一下,决定用Nginx嵌入Lua的方式搞。 Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码。业余时间使用过,感觉小巧轻快,代码风格和Python一样简洁
9月19号参加了北京的PyCon2015,有众多互联网公司参加,而且云计算类的公司颇多,足以看出Python在云计算领域的应用之广。 虽然会上广告很多,但也不乏干货: 1.美团云的分享: 简单语言构建复杂系统 幻灯 2.Splunk首席工程师丁来强的分享: Python高效函数
Python的”类型-对象”体系实现的简洁而优雅,”元类”-“类”-“实例对象”自上而下,层次分明。以下是关键的几个点: 1.一切(函数,类等)皆对象(object) 2.变量名只是对象的引用 3.object类是所有类(对象)的最终父类,但object不是任何类的子类,这是对
有些时候你的项目中难免需要一些全局唯一的对象,这些对象大多是一些工具性的东西,在Python中实现单例模式并不是什么难事。以下总结几种方法: ##使用类装饰器使用装饰器实现单例类的时候,类本身并不知道自己是单例的,所以写代码的人可以不care这个,只要正常写自己的类的实现就可以,
Memcached作为高性能的分布式内存对象缓存系统,在web服务里应用较广,和高性能的异步非阻塞服务器Tornado搭配起来可以大幅提高服务端的性能。 ##应用Memcached缓存热点请求结果我们给客户端提供api,通过json来返回http请求的结果,一般Web服务都是如此