包含标签 Python 的文章

使用gRPC和Proto Buffers来实现PRC调用

上一篇写了Thrift,这篇就把当下比较流行的跨语言服务调用框架gRPC一起介绍下。gRPC来自Google(所以要好好学习,就需要ti子了),如果你了解过Thrift,那gRPC跟其很类似,也是一个RPC的框架。gRPC采用Protocol Buffers……

阅读全文

使用Thrift来实现跨语言的方法调用

有时遇到10多年历史的C++写的老代码,对于不熟悉C++开发的团队来说,最好的方式是不去改它。但是,你却有需求从Web(比如PHP的站点)来调用老代码的库。怎么办?传统的方式是用COM组件,但这就限制在Windows平台上了。要做到完全跨平台,跨各种语言。……

阅读全文

谈一谈Python的上下文管理器

经常在Python代码中看到with语句,仔细分析下,会发现这个with语句功能好强,可以自动关闭资源。这个在Python中叫上下文管理器Context Manager。那我们要怎么用它,什么时候用它呢。这里我们就来聊一聊。 上下文管理器的作用 很多情况,当我们……

阅读全文

分布式任务队列Celery的介绍

在程序运行过程中,要执行一个很久的任务,但是我们又不想主程序被阻塞,常见的方法是多线程。可是当并发量过大时,多线程也会扛不住,必须要用线程池来限制并发个数,而且多线程对共享资源的使用也是很麻烦的事情。还有就是前面几篇介绍过的协程,但是协程毕竟还是在同一线程……

阅读全文

基于协程的Python网络库gevent介绍

继续Python协程方面的介绍,这次要讲的是gevent,它是一个并发网络库。它的协程是基于greenlet的,并基于libev实现快速事件循环(Linux上是epoll,FreeBSD上是kqueue,Mac OS X上是select)。有了gevent,协程……

阅读全文

用greenlet实现Python中的并发

在上一篇介绍生成器时,我们讲到了协程(Coroutine),它也被称为微线程。回顾一下,协程可以在一个函数执行过程中将其挂起,去执行另一个函数,并在必要时将之前的函数唤醒。在Python的语言环境里,协程是相当常用的实现”并发”的方……

阅读全文

谈谈Python的生成器

第一次看到Python代码中出现yield关键字时,一脸懵逼,完全理解不了这个。网上查下解释,函数中出现了yield关键字,则调用该函数时会返回一个生成器。那到底什么是生成器呢?我们经常看到类似下面的代码 def count(n): x = 0 while x < n: yield x x += 1 for i in count(5): print i 这段代码执行……

阅读全文

关于Python的Mixin模式

像C或C++这类语言都支持多重继承,一个子类可以有多个父类,这样的设计常被人诟病。因为继承应该是个”is-a”关系。比如轿车类继承交通工具类,因为轿车是一个(“is-a”)交通工具。一个物品不可能是多种不同的……

阅读全文

Flask补充系列–将应用部署在Heroku上

之前曾经介绍过如何将Flask应用部署在自己的服务器上,对于手头并不宽裕的程序员来说,购置一台托管服务器还是一笔不小的开销。即便现在有公有云服务器可以买,不过如果你只是以学习为目的,这笔开销还是能省则省了。另外,如果你的应用中需要访问国外被河蟹掉的资源,在……

阅读全文

Flask扩展系列–自定义扩展

介绍了那么多Flask扩展,该讲下如何写自己的扩展了。你可以写个扩展给自己的项目用,也可以发起审核申请,审核通过的扩展会显示在官方扩展列表中。本篇中,让我们创建一个为视图访问加日志的扩展Flask-Logging,并从中了解到写Flask扩展的规范。 系列文……

阅读全文