mso-hansi-font-family:"Times New Roman"'>我常用的幾個第三方
Python mso-hansi-font-family:"Times New Roman"'>庫
mso-hansi-font-family:"Times New Roman"'>作者:賴勇浩(http://blog.csdn.net/lanphaday"Times New Roman"'>)
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>今天公司停電,沒上班。跑上來更新個部落格,跟大家分享一下我常用的幾個第三方 Python "Times New Roman";mso-hansi-font-family:"Times New Roman"'>庫。Python "Times New Roman";mso-hansi-font-family:"Times New Roman"'>語言之所以能夠如此流行,除了本身內建許多程式庫來保障快速開發之外,目不睱接的第三方庫也是一大主因。結合我目前的工作(網遊開發),我常用的幾個第三方庫如下:
wxPython
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>如果你之前是 windows "Times New Roman";mso-hansi-font-family:"Times New Roman"'>程式員,用 MFC mso-hansi-font-family:"Times New Roman"'>或者 WIN32API "Times New Roman"'>開發介面程式,那進入 Python "Times New Roman"'>國度最好的 GUI "Times New Roman"'>選擇應該是 wxPython"Times New Roman"'>。它是 wxWidgets "Times New Roman"'>的 Python Bind"Times New Roman"'>,與 wxWidgets "Times New Roman"'>的開發完美同步,最為重要的一點是它的訊息機制與 MFC "Times New Roman"'>頗為相似,以前在 MFC "Times New Roman"'>的經驗完全可以稍作變化就套用在 wxPython "Times New Roman"'>上面。在 WIN32 "Times New Roman"'>開發中,最討厭的一環肯定有 WM_SIZE "Times New Roman"'>訊息的處,在主視窗大小變化的時候,保持控制項布局在 WIN32 "Times New Roman"'>是一件麻煩事。這件事情 wx "Times New Roman"'>解決得非常完美,它的sizer "Times New Roman"'>概念可以讓我輕鬆地在不同視窗尺寸的情況下保持完美的控制項布局。另外如果你已經討厭了 MFC mso-hansi-font-family:"Times New Roman"'>的 doc-view "Times New Roman"'>模型,wx 宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>也可以給你一個新的選擇;如果你非常喜歡 doc-view "Times New Roman";mso-hansi-font-family:"Times New Roman"'>模型,放心,在 wx mso-hansi-font-family:"Times New Roman"'>中仍然可以輕鬆實現,以前的思想依然可以在這裡發揮餘熱。
wxPython "Times New Roman"'>有兩個封裝,一個 PythonCard"Times New Roman"'>,另一個是 dabo"Times New Roman"'>。前者是 wxPython "Times New Roman"'>的有限封裝,不支援 wxPython "Times New Roman"'>的全部特性,它的目標是讓 wxPython "Times New Roman"'>更加 Pythonic"Times New Roman"'>。後者比 PythonCard "Times New Roman"'>要龐大不少,確切來說,它應該是一個三層架構的 C/S "Times New Roman"'>模式的開發架構。如果你想開發基於資料庫的應用(如 MIS"Times New Roman"'>、ERP 宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>等)用 dabo mso-hansi-font-family:"Times New Roman"'>是一個不錯的選擇;另外,如果你之前習慣了 VBmso-hansi-font-family:"Times New Roman"'>、VFP"Times New Roman"'>、Delphi "Times New Roman"'>等 RAD 宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>開發環境,dabo mso-hansi-font-family:"Times New Roman"'>並不比這些昂貴的工具差多少哦!
py2exe
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>按照邪惡的 windows "Times New Roman";mso-hansi-font-family:"Times New Roman"'>思維,編寫的應用如果不編譯出一個 .exe mso-hansi-font-family:"Times New Roman"'>檔案恐怕是算不得“軟體”的,py2exe
mso-hansi-font-family:"Times New Roman"'>作用正是把你的 .py "Times New Roman"'>指令碼變成 .exe "Times New Roman"'>檔案,通常它會把指令碼打包到一個 .zip "Times New Roman"'>檔案中去,但也你可以通過修改 setup.py "Times New Roman"'>指令碼把所有的指令碼、依賴的 dll "Times New Roman"'>等全部打包到一個 exe "Times New Roman"'>中去,看起來跟 VC"Times New Roman"'>、VB 宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>編譯出來的程式沒有什麼兩樣!
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>如果你的客戶需要在 windows "Times New Roman";mso-hansi-font-family:"Times New Roman"'>下使用你的應用程式,py2exe "Times New Roman";mso-hansi-font-family:"Times New Roman"'>是你不可或缺的工具。我就是用它打包由 wxPython 寫的小工具給公司裡的遊戲策劃用的。
psyco
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>指令碼的執行效率多少有點差強人意,雖然最佳化起來並不是難事,但如果有簡單的方法,近乎不用修改原始碼,那當然值得去關注一下。psyco mso-hansi-font-family:"Times New Roman"'>的神奇在於它只需要在代碼的入口處調用短短兩行代碼,效能就能提升 40% mso-hansi-font-family:"Times New Roman"'>或更多,真可謂是立竿見影!
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>如果你的客戶覺得你的程式有點慢,敬請不要急著去最佳化代碼,psyco mso-hansi-font-family:"Times New Roman"'>或許能讓他立即改變看法。psyco
mso-hansi-font-family:"Times New Roman"'>堪稱 Python "Times New Roman"'>的 jit宋體;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>,有許多潛力可以挖掘,如果剩下來給你最佳化效能的時間已經不多,請馬上去閱讀它的手冊,有許多招兒輕鬆最佳化效能。
PIL
PIL "Times New Roman"'>是 Python "Times New Roman"'>的影像處理庫,我的看法是強到沒得說,簡單到沒得說。它可以開啟數十種映像格式,常見的 jpg/png/bmp "Times New Roman";mso-hansi-font-family:"Times New Roman"'>等當然不在話下;此外還提供許多影像處理函數,像增強、濾波演算法等,詳情可以參考我以前的一篇文章《用Python "Times New Roman";mso-hansi-font-family:"Times New Roman"'>做影像處理》(http://blog.csdn.net/lanphaday/archive/2007/10/28/1852726.aspx"Times New Roman"'>)和《計算映像相似性》(http://blog.csdn.net/lanphaday/archive/2008/04/24/2325027.aspx"Times New Roman"'>)。
MySQLdb
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>這是 Python "Times New Roman";mso-hansi-font-family:"Times New Roman"'>對開來源資料庫 Mysql "Times New Roman";mso-hansi-font-family:"Times New Roman"'>的支援,官網在http://sourceforge.net/projects/mysql-python"Times New Roman"'>。支援 Mysql 3.23-5.1 "Times New Roman"'>全系列版本,Python "Times New Roman"'>版本的要求是 2.3-2.5"Times New Roman"'>。MySQLdb "Times New Roman"'>是 Python DB API-2.0 "Times New Roman"'>的實現,現在已經很成熟了。最新的版本是 1.2.2mso-hansi-font-family:"Times New Roman"'>。
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>如果從事伺服器開發,那少不得跟資料庫連接池打交道,這時你可以使用
DBUtils "Times New Roman";mso-hansi-font-family:"Times New Roman"'>或 jonpy mso-hansi-font-family:"Times New Roman"'>兩個開來源程式庫。其中 DBUtils
mso-hansi-font-family:"Times New Roman"'>是一套資料庫連接池庫,而 jonpy
mso-hansi-font-family:"Times New Roman"'>則包括了 CGI "Times New Roman"'>以及資料庫連接池等多個功能,請在閱讀手冊後選擇合適的自己庫。
pyprocessing
Python "Times New Roman"'>解譯器裡的 GIL"Times New Roman"'>(全域解譯器鎖)使得 Python "Times New Roman"'>在多核時代有點尷尬——這個支援原生線程的指令碼語言竟然不能通過多線程利用多個 CPU mso-hansi-font-family:"Times New Roman"'>核心同時並發計算。pyprocessing
mso-hansi-font-family:"Times New Roman"'>沒有嘗試去除 GIL"Times New Roman"'>,而是劍走偏鋒,嘗試從多進程的方式來協助 Python "Times New Roman"'>走出困境。結果就是使用 pyprocessing "Times New Roman"'>建立進程和處理序間通訊不僅像使用內建的 threading "Times New Roman"'>模組那麼簡單,甚至還更加簡單。pyprocessing "Times New Roman"'>不僅可以通過本機 socket "Times New Roman"'>和管道進行通訊,而且封裝得極為完美,它的 Queue "Times New Roman"'>實現用起來跟內建的 Queue "Times New Roman"'>沒啥兩樣,但它是一個進程間共用的隊列哦!
pyprocessing "Times New Roman"'>在 py2.6 "Times New Roman"'>和 py3.0 "Times New Roman"'>中已經作為內建模組了,也算是開發社區對 pyprocessing "Times New Roman"'>項目的肯定吧。如果你用 Python "Times New Roman"'>程式開發伺服器應用,特別是網路遊戲這樣的應用,pyprocessing "Times New Roman"'>怎麼可以不去關注一下!