做者:赖勇浩(http://blog.csdn.net/lanphaday)python
今天公司停电,没上班。跑上来更新个博客,跟你们分享一下我经常使用的几个第三方 Python 库。Python 语言之因此可以如此流行,除了自己 内置许多程序库来保障快速开发以外,目不睱接的第三方库也是一大主因。结合我目前的工做(网游开发),我经常使用的几个第三方库以下:mysql
若是你以前是 windows 程序员,用 MFC 或者 WIN32API 开发界面程序,那进入 Python 国度最好的 GUI 选择应该 是 wxPython。它是 wxWidgets 的 Python Bind,与 wxWidgets 的开发完美同步,最为重要的一点是它的消息机制与 MFC 颇为类似,之前在 MFC 的经验彻底能够稍做变化就套用 在 wxPython 上面。在 WIN32 开发中,最讨厌的一环确定有 WM_SIZE 消息的处,在主窗口大小变化的时候,保持控件布局 在 WIN32 是一件麻烦事。这件事情 wx 解决得很是完美,它的sizer 概念可让我轻松地在不一样窗口尺寸的状况下保持完美的控件布局。另外如 果你已经讨厌了 MFC 的 doc-view 模型,wx 也能够给你一个新的选择;若是你很是喜欢 doc-view 模型,放心,在 wx 中仍然 能够轻松实现,之前的思想依然能够在这里发挥余热。程序员
wxPython 有两个封装,一个 PythonCard,另外一个是 dabo。前者是 wxPython 的有限封装,不支持 wxPython 的所有特性,它的目标是让 wxPython 更加 Pythonic。后者比 PythonCard 要庞大很多,确切来讲,它应该 是一个三层架构的 C/S 模式的开发框架。若是你想开发基于数据库的应用(如 MIS、ERP 等)用 dabo 是一个不错的选择;另外,若是你以前 习惯了 VB、VFP、Delphi 等 RAD 开发环境,dabo 并不比这些昂贵的工具差多少哦!算法
按照邪恶的 windows 思惟,编写的应用若是不编译出一个 .exe 文件恐怕是算不得“软件”的,py2exe 做用正是把你 的 .py 脚本变成 .exe 文件,一般它会把脚本打包到一个 .zip 文件中去,但也你能够经过修改 setup.py脚本把全部的脚本、依赖 的 dll 等所有打包到一个 exe 中去,看起来跟 VC、VB 编译出来的程序没有什么两样!sql
若是你的客户须要在 windows 下使用你的应用程序,py2exe 是你不可或缺的工具。我就是用它打包由 wxPython 写的小工具给公司里的游戏策划用的。数据库
脚本的执行效率多少有点差强人意,虽然优化起来并非难事,但若是有简单的方法,近乎不用修改源代码,那固然值得去关注一下。psyco 的神奇在于它只须要在代码的入口处调用短短两行代码,性能就能提高 40%或更多,真可谓是立竿见影!windows
若是你的客户以为你的程序有点慢,敬请不要急着去优化代码,psyco 或许能让他当即改变见解。psyco 堪称 Python 的 jit,有许多潜力能够挖掘,若是剩下来给你优化性能的时间已经很少,请立刻去阅读它的手册,有许多招儿轻松优化性能。服务器
PIL 是 Python 的图像处理库,个人见解是强到没得说,简单到没得说。它能够打开数十种图像格式,常见的jpg/png/bmp 等固然 不在话下;此外还提供许多图像处理函数,如图像加强、滤波算法等,详情能够参考我之前的一篇文章《用Python 作图像处理》(http://blog.csdn.net/lanphaday/archive/2007/10/28/1852726.aspx)和《计算图像类似度》(http://blog.csdn.net/lanphaday/archive/2008/04/24/2325027.aspx)。网络
这是 Python 对开源数据库 Mysql 的支持,官网在http://sourceforge.net/projects/mysql-python。支持 Mysql 3.23-5.1 全系列版本,Python 版本的要求是 2.3-2.5。MySQLdb 是 Python DB API-2.0 的实现,如今已经很成熟了。最新的版本是 1.2.2 。多线程
若是从事服务器开发,那少不得跟数据库链接池打交道,这时你可使用 DBUtils 或 jonpy 两个开源程序库。其中 DBUtils 是一套数据库链接池库,而 jonpy 则包括了 CGI 以及数据库链接池等多个功能,请在阅读手册后选择合适的本身库。
Python 解释器里的 GIL(全局解释器锁)使得 Python 在多核时代有点尴尬——这个支持原生线程的脚本语言居然不能经过多线程利用 多个 CPU 内核同时并发计算。pyprocessing 没有尝试去除 GIL,而是剑走偏锋,尝试从多进程的方式来帮助 Python 走出困境。 结果就是使用 pyprocessing 建立进程和进程间通讯不只像使用内置的 threading 模块那么简单,甚至还更加简单。 pyprocessing 不只能够经过本机 socket 和管道进行通讯,并且封装得极为完美,它的 Queue 实现用起来跟内置 的 Queue 没啥两样,但它是一个进程间共享的队列哦!
pyprocessing 在 py2.6 和 py3.0 中已经做为内置模块了,也算是开发社区对 pyprocessing 项目的确定吧。若是你用 Python 开发服务器应用,特别是网络游戏这样的应用,pyprocessing 怎么能够不去关注一下!