Tag: Python

  • [翻译]Go 和 Python 的 Web 服务器性能对比

    原文在此:http://ziutek.github.com/web_bench/

    由于是早上看到 鱼哥,在推上的推荐,我实在忍不住……这是中午的草率之举,所以 鱼哥 对本文的翻译负全责。

    PS:别说我工作状态不饱满,我在等丫的程序执行完……

    ————翻译分割线————

    Go 和 Python Web 服务器性能对比

    我通常使用 Python 来构建 Web 应用。一年前,在兴趣的驱使下,我开始学习 Go。 在此期间,我重写了一些原本由 C 开发的 CGI 应用,包括运行于 chroot 环境下的同 thttpd 服务器一起的应用。我开始寻找可以开发易于 chroot、且内置 Web 服务器的独立 Web 应用的工具。那时,我开始玩 web.go 框架、mustache.go 模板、Go 原生 http 包和 GoMySQL 数据库 API。我发现,有 http、mustache.go  GoMySQL 包的 Go 可以是我用来工作的不错的工具组合。因此,我决定使用 Go 编写我的应用。
    (more…)

  • python 自身的协程实现?

    本来,想给这个随笔起个更眩的名字:《跟随赖神学协程——之一》,原因嘛,自然是因为赖神的协程三篇之一(协程初接触)。不过,怕赖神k我,所以标题党还是朴素一点吧。

    至于标题里的问号,是我有意加上去的。原因是在推上赖神认为“python 语言和标准库是不支持协程的(3.x部分支持)”,并且如果 python 自身支持协程,“stackless py 该有多么惭愧啊, :)”(stackless python 的协程详情请看这里)。但是因为 PEP 0342 的描述,令我很迷惑。python 自身是否可以实现协程,这个值得商榷。我不确定,保守点好,给自己个后路走。加个问号吧……如果这不算协程,大家就当我实现了“伪协程”吧。嘿嘿…… (more…)

  • Netbeans Python 调试,郁闷的包导入问题

    这几天在帮忙开发一个 python 项目。使用 netbeans 的时候,遇到一个诡异的问题。

    如果使用“运行”来跑项目,一切正常。而如果使用“调试”来跑项目,当执行到 import 第三方的库的时候,就会产生“ImportError: No module named xxxx”。郁闷不已,上网查了半天,没找到可用的信息。

    毛主席教育我们“自己动手,丰衣足食”。于是就祭出“观察、归纳和总结”的科学的研究方法,对这个灵异现象进行了一番探索。 (more…)

  • 脚本语言的配置文件

    关于配置文件,在 PHP 的 Zend Framework 中我做过一些简单的关于性能的测试:http://www.mikespook.com/index.php/archives/36。将 ninnypro 的配置文件从 ini 修改为 xml ,并且声称能提高传说中的性能。

    最近被调到另外一个在用 python 的组帮忙,阅读了他们的实现服务器端的 python 代码之,配置文件近二十余个,全是 xml 文件。为了使用着些配置文件,从 XMLFile 继承,实现了二十余个 Config 类。

    这看起来似乎没什么问题。 (more…)

  • TurboGears 学习笔记-控制器

    这部分内容虽然不多,但是看了好多天。

    在 tgadmin 自动生成的 appname/appname/controller.py 中有如下代码:

    1 import turbogears as tg
    2 from turbogears import controllers, expose, flash
    3 from cherrypy import request
    4 # from sandbox import model
    5 # import logging
    6 # log = logging.getLogger(“sandbox.controllers”)
    7
    8 class Root(controllers.RootController):
    9 @expose(template=sandbox.templates.welcome)
    10 def index(self):
    11 import time
    12 # log.debug(“Happy TurboGears Controller Responding For Duty”)
    13 flash(Your application is now running)
    14 return dict(now=time.ctime())

    Root.index 是 http://127.0.0.1:8080/index 的控制器。如果需要添加新的“页面”,只要在 Root 中添加新的方法即可:

    16 @expose()
    17 def foobar(self):
    18 return Just another page

    @expose() 是一定要加的,不加这个,无法定位控制器的方法。

    我这里没有添加 template,所以框架将返回的内容直接作为字符串输出在页面上了。

    如果想使用模板(默认为Kid),则指定模板名称 template=”appname.appname.foobar”,这个对应的是项目根开始的目录和模板文件名的结构。实际模板应保存在 appname/appname/foobar.kid 文件中。

    控制器通过 expose 出来的方法的参数获得浏览器传递过来的变量,对上面的方法稍加改造即可:

    16 @expose()
    17 def foobar(self, *args, **kv):
    18 if (kv.has_key(name)):
    19 name = kv[name]
    20 else:
    21 name = unknown
    22 return Your name is + name

    当访问 http://127.0.0.1:8080/foobar 时,页面显示 Your name is unknown。当访问 http://127.0.0.1:8080/foobar?name=fool 时,页面显示 Your name is fool。

    当提供一个名为 default 的方法 expose 时,所有未定义的访问都会转到这个方法上去。这时,args 参数包含了访问所用的名字。例如访问 http://127.0.0.1:8080/barfoo,而 barfoo 未定义,那么default 方法被调用。同时 args[0] = “barfoo“。

    好像控制器最基本的使用就这么些东西了,有点类似 Zend Framework 的 Controller->Action 的形式,仅仅是形式。

  • TurboGears 学习笔记-安装

    Zope3 很强大,但是一直徘徊在 python 2.4 不升级。学习的兴趣骤减。Django 版本一直停滞在 0.96 不前。据说 12 月会出 1.0,但是兼容性似乎不能保障。偶然的机会看到一篇 TurboGears 的文章,似乎停简单。于是乎,先学安装。

    TurboGears 的安装已经简单到了及至:easy_install turbogears。

    在 ubuntu 下使用 easy_install 这个命令需要安装 python-setuptools 这个包。

    在终端中执行 tg-admin 这个命令,一切正常,除了会有一个警告:UserWarning: Your installation of Python doesn’t have a profile module.原来还需要安装 python-profiler 这个包,使用 apt-get 安装之后,这个警告就不会再出现了。

    使用 tg-admin quickstart 生成一个项目,比如 sandbox。进入自动生成的 sandbox 目录,执行命令 ./start-sandbox.py 一切 OK,只要 8080 端口没有被占用,TurboGears 就正常启动了。

    在开发模式下,如果需要修改 8080 端口,找到 dev.cfg 文件中的 #server.socket_port=8080 行,去掉注释,修改端口,重新执行 ./start-sandbox.py 即可。

    TurboGears 所具有的美感是 zend framework 所不具备的。连安装和部署都这么简单。希望 zend framework 能够取其之长,至少提供几个实用的自动化工具也好啊。

  • 參加了 ZPyUG 08年第一次活動

    http://wiki.woodpecker.org.cn/moin/ZPyUG/2008-03-15

    切身體會了一下 Python 社區的氛圍。確實,就如同語言一樣,Python 社區的操作比 PHP 社區要嚴謹許多。

    會課中老潘介紹了 doctest 在 python 中的使用,這個對于我來說是個感覺不錯的東東。回來查了一下 PHP 有類似的東西,但是不是很成熟 http://code.google.com/p/doctest-php/

    劉興介紹了新版本 Python 的一些特性,我估計 Python 也會像 PHP 一樣維護并行的兩個版本了。

    金山這個國內業界的老大,對 Python 的支持不錯。同時在會課中間插播了他們的招聘,條件很誘人,不過珠海實在是有些令人遺憾。要是在廣州開發,或許會去嘗試一下它的氛圍。

    另外老潘介紹了 Zope3,我突然想到,是不是可以用這個作為后臺邏輯支持。有時間要看看才行。