你今天Python了吗?(下)
在体验了wxPython的强大之后,让我们把注意力集中到Twisted上来。在C++的世界里,你会发现一个很棒的网络应用框架,那就是ACE了;在Python的地盘,Twisted则是在网络应用框架中当之无愧的老大。
Twisted是一个纯Python的网络应用框架。由于Twisted社区十分的活跃,你可以从网站上得到充分的文档,让你轻松上手;Twisted是开源的,你可以为框架增加任何的特性,只要你有好的Idea;由于Twisted是完全由Python编写的,本身会十分安全和稳定。这都得益于Python本身的设计和容错机制;还有最最重要的一点,就是你能够很快的开发出遵循自定义协议的服务器。这是不是很帅呢?大家先看以下代码:
from twisted.internet import reactor
class Echo(Protocol):
def dataReceived(self, data):
self.transport.write(data)
if data == 'q':
self.transport.loseConnection()
def main():
factory = Factory()
factory.protocol = Echo
reactor.listenTCP(8000,factory)
reactor.run()
if __name__ == '__main__':
main()
这里定义了一个很简单的Echo协议:就是将client端的输入再次回显而已。运行该脚本,然后利用telnet程序去连接本机的8000端口,连接上之后,你可以尝试着敲入几个字符,你会发现屏幕上会将你敲入的字符显示了两遍。不需要惊讶,因为一遍是由于键盘输入产生的屏幕输出,而另一遍则是由服务器将接受到的数据发送回client而产生的输出。如果你按下'q',就能够断开与服务器的连接。
虽然以上实现的功能很简单,但是我们确实建立了一个属于自己的服务器,一个按照自己定义的协议提供服务的server。开发的速度是不是很快呢?正如Twisted网站上说的Develop servers at lightning speed(闪电般的速度)。只要将具体的协议做进一步的扩展,就能建立起功能强大的服务器了。在这里所提到的Twisted的功能仅仅是这座宝藏的冰山一角,在这里就不进一步去阐述了。有兴趣的朋友可以从Twisted的网站得到更多的信息。
除了上篇和以上讲述到的两个强大的基于Python的类库之外,还有IronPython,一个在.NET上的Python实现,不仅可以把Python程序编译成IL并跟CLR良好的协作,其执行速度还要比Python的C语言实现要快许多;还有Zope也不得不提一下。它也是由Python编写而成的Web Server和Web Application应用开发框架,其中用到了不少新鲜的东西哦,譬如面向对象数据库以及CMF(Content Management Framework)等。还有Plone,一个十分出色的CMS(Content Management System),想看看以它进行内容管理的网站吗?看看这里很cool的网站列表吧。你会发现夏威夷政府,还会发现太空总署。除了Plone,还有PyGame,还有高居SourceForge下载排行榜前列的BitTorrent,还有……赶紧去瞧瞧你身边的宝藏吧。如果你仍然对于Python持怀疑的态度,最后再听听牛人Eric Raymond的意见吧:Why Python?
让Python在国内发展得更快,得到更广泛的应用,作为程序员的我们是不是也该出一分力呢?毕竟Python让我们的编码变得更加有效,也更加有趣。
Be a pragmatic programmer,从Python开始。 你今天Python了吗?
你今天Python了吗?(下)的更多相关文章
- sqlalchemy mark-deleted 和 python 多继承下的方法解析顺序 MRO
sqlalchemy mark-deleted 和 python 多继承下的方法解析顺序 MRO 今天在弄一个 sqlalchemy 的数据库基类的时候,遇到了跟多继承相关的一个小问题,因此顺便看了一 ...
- Python中的下划线(译文)
原文地址这篇文章讨论Python中下划线_的使用.跟Python中很多用法类似,下划线_的不同用法绝大部分(不全是)都是一种惯例约定. 单个下划线(_) 主要有三种情况: 1. 解释器中 _符号是指交 ...
- Python 3.x下消除print()自动换行
Python 2.x下的print语句在输出字符串之后会默认换行,如果不希望换行,只要在语句最后加一个“,”即可.但是在Python 3.x下,print()变成内置函数,加“,”的老方法就行不通了. ...
- 详解 Python 中的下划线命名规则
在 python 中,下划线命名规则往往令初学者相当 疑惑:单下划线.双下划线.双下划线还分前后……那它们的作用与使用场景 到底有何区别呢?今天 就来聊聊这个话题. 1.单下划线(_) 通常情况下,单 ...
- 抓取oschina上面的代码分享python块区下的 标题和对应URL
# -*- coding=utf-8 -*- import requests,re from lxml import etree import sys reload(sys) sys.setdefau ...
- python命令行下tab键补全命令
在python命令行下不能使用tab键将命令进行补全,手动输入又很容易出错. 解决:tab.py #/usr/bin/env python # -*- coding:utf-8 -*- ''' 该模块 ...
- Python交互模式下方向键出现乱码
解决办法如下: 1.安装readline模块 readline库是bash shell用的库,包含许多功能,如命令行自动补全等. ubuntu下安装的命令: sudo apt-get instal ...
- 【技术翻译】支持向量机简明教程及其在python和R下的调参
原文:Simple Tutorial on SVM and Parameter Tuning in Python and R 介绍 数据在机器学习中是重要的一种任务,支持向量机(SVM)在模式分类和非 ...
- [转]关于python中带下划线的变量和函数的意义
Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...
- python多线程场景下print丢失
python多线程情况下,print输出会出现丢失的情况,而logging模块的日志输出不会. 以下是示例代码,多运行几次就会发现这个有意思的现象 # coding:utf-8 import thre ...
随机推荐
- Makefile笔记
一个简单的Makefile描述规则组成: TARGET...:PREREQUISITES... COMMANDS... ... target:规则的目标.通常是程序中间或者最后要生成的文件名,也可以是 ...
- [z]Google SPDY介绍
转自 http://blog.csdn.net/marcky/article/details/7728662 本文主要是参考Google SPDY项目主页的一些文档总结而来,目的整体上介绍SPDY协议 ...
- SQL Server Profiler监控SQL Server性能
全面掌握SQL Server Profiler 1. 原理与相关概念介绍 SQL Server Profiler,大家已经非常熟悉.常常在性能优化中使用,本文档详细介绍SQL Server ...
- Java ssh 访问windows/Linux
Java ssh 访问windows/Linux 工作中遇到的问题: Java code运行在一台机器上,需要远程到linux的机器同时执行多种命令.原来采用的方法是直接调用ssh命令或者调用pli ...
- JUnit单元测试--小试牛刀
单元测试更多的是在开发阶段完成,开发人员每写一个函数的时候都会写相应的单元测试.对于java代码,普遍使用的是jUnit,根据jUnit可以自己相应的开发一套自动化测试框架.这个的前提是要学会juni ...
- RecyclerView(6)自定义RecyclerView.LayoutManager
A LayoutManager is responsible for measuring and positioning item views within a RecyclerView as wel ...
- UVa 11389 (贪心) The Bus Driver Problem
题意: 有司机,下午路线,晚上路线各n个.给每个司机恰好分配一个下午路线和晚上路线. 给出行驶每条路线的时间,如果司机开车时间超过d,则要付加班费d×r. 问如何分配路线才能使加班费最少. 分析: 感 ...
- python模拟http请求2
发现了一个非常好用的第三方module:requests,模拟接口非常简单. 详细了解请移步:http://docs.python-requests.org/en/latest/ 非常不错 #!cod ...
- Windows Azure® 由世纪互联运营发布MySQL Database on Azure正式商用版
我们很高兴宣布MySQL Database on Azure于2015年9月1日在中国地区正式商用.回望过去,从2014年12月对少量用户开放的预览试用,到2015年4月30日对中国用户全面开放的公共 ...
- poj 1780 Code
//题目描述:KEY公司开发出一种新的保险箱.要打开保险箱,不需要钥匙,但需要输入一个正确的.由n位数字组成的编码.这种保险箱有几种类型,从给小孩子玩的玩具(2位数字编码)到军用型的保险箱(6位数字编 ...