Python orm的选择太多了,选哪个也令人头痛。在网上找到两个老外对Storm, SQLAlchemy, and Geniusql进行了很详细的性能测试。
Storm, SQLAlchemy, and Geniusql
Revisiting Storm, SQLAlchemy, and Geniusql
2008年8月5日星期二
2008年6月17日星期二
Python与Hadoop
“Hadoop,一个全世界都在关注的项目。包括Google和IBM,Yahoo用Hadoop让大学来培训分布式计算的学生。IBM用其来做Cloud Computing 。Yahoo用它来做基础结构和Yahoo搜索等。”
以上转贴Hadoop研究,一个研究讨论hadoop的中文平台。
以上转贴Hadoop研究,一个研究讨论hadoop的中文平台。
Hadoop原来是Apache Lucene下的一个子项目,它最初是从Nutch项目中分离出来的专门负责分布式存储以及分布式运算的项目。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。不过Hadoop是基于Java语言的,要想让Python也能用上Hadoop,有两种方法:一是利用Jpython将python编译为java代码,另一种方式则是使用Hadoop Streaming帮 助我们用非Java的编程语言使用MapReduce,Streaming用STDIN (标准输入)和STDOUT (标准输出)来和我们编写的Map和Reduce进行数据的交换数据。任何能够使用STDIN和STDOUT都可以用来编写MapReduce程序,比如 用Python的sys.stdin和sys.stdout。
这篇文章详细介绍了使用Hadoop streaming的方法。
Web.py模板系统的tips [2008-6-12]
在webpy的模板系统里,仅能使用由程序传过来的变量和类,以及一些基本的itorator语句,不直接支持在模板里使用python的语句。如下面webpy的模板里的range和len会被系统报错,称“range”和“len”没有被定义。对于这种情况,有人说不好,不方便;也有人说就是应该这样,表现逻辑应该和呈现逻辑就是要区分开来,不应该允许在模板中直接调用python代码。
但是,如果以上例子能使用range和len将会带来很大的便利而并不会mix up所谓的表现逻辑和呈现逻辑。该怎么办?在webpy的论坛了,我找到了答案;)
只要在“表现逻辑”里增加以下语句,你的“呈现逻辑”模板就再也不会报错啦!
web.template.Template.globals['len'] = len
web.template.Template.globals['range'] = range
后来又找到一个更强的用法:
web.template.Template.globals['py'] = web.storify(__builtins__)
这样,你就可以使用py.xxx的方式,使用python所有的语句和函数啦!
<h1>$title</h1>
$ for x in range(len(itemlist)):
<li> $x </li>
但是,如果以上例子能使用range和len将会带来很大的便利而并不会mix up所谓的表现逻辑和呈现逻辑。该怎么办?在webpy的论坛了,我找到了答案;)
只要在“表现逻辑”里增加以下语句,你的“呈现逻辑”模板就再也不会报错啦!
web.template.Template.globals['len'] = len
web.template.Template.globals['range'] = range
后来又找到一个更强的用法:
web.template.Template.globals['py'] = web.storify(__builtins__)
这样,你就可以使用py.xxx的方式,使用python所有的语句和函数啦!
标签:
python,
template system,
webpy
2008年6月6日星期五
又一个模板系统: Tenjin
在webpy的论坛上看到一个叫makoto kuwata的日本人, 介绍被他成为世界上最快的模板引擎(the fastest template engine in the world..),Tenjin。他的网站在这儿。
根据介绍,该引擎有多个语言版本,java,php,ruby,当然也包括python。其速度比我常用的cheetach要快大约三倍,比Django的模板系统要快9倍等,详细的测试结果可以看下面:
根据介绍,该引擎有多个语言版本,java,php,ruby,当然也包括python。其速度比我常用的cheetach要快大约三倍,比Django的模板系统要快9倍等,详细的测试结果可以看下面:
| Language | Template Engine | Test#1(sec) | Test#2(sec) |
|---|---|---|---|
| Python(2.5.1) | pyTenjin (0.6.1) | 6.96 | 5.61 |
| Cheetah (2.0) | 20.36 | 19.82 | |
| Django (0.9.5) | 71.33 | 59.80 | |
| Myghty (1.1) | 107.88 | 19.30 | |
| Kid (0.9.6) | 380.24 | 378.96 | |
| Genshi (0.4.4) | 560.30 | 271.69 | |
| Mako (0.1.9) | 17.78 | 13.49 | |
| Templetor (web.py 0.22) | 428.19 | 61.53 | |
| Ruby(1.8.6) | rbTenjin (0.6.0) | 7.34 | 4.52 |
| eruby (1.0.5) | 12.29 | 11.53 | |
| ERB(def_method) (Ruby1.8.6) | 36.73 | 5.85 | |
| PHP(5.2.0) | phpTenjin (0.0.1) | 5.39 | 3.64 |
| Smarty (2.6.18) | 10.84 | 10.21 | |
| Perl(5.8.8) | plTenjin (0.0.1) | 10.42 | 5.72 |
| Template-Toolkit(XS) (2.18) | 103.58 | 26.30 | |
| HTML::Template (2.9) | 46.70 | 30.21 | |
| JS(spidermonkey) | jsTenjin (0.0.1) | 19.00 | 12.98 |
| JS(Rhino, JDK5) | jsTenjin (0.0.1) | 24.29 | 19.15 |
| Java(JDK5) | Velocity (1.4) | 22.80 | 11.41 |
| Velocity (1.5) | 20.01 | 8.42 |
订阅:
博文 (Atom)
