做者:賴勇浩(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 怎麼能夠不去關注一下!