我最喜歡Python的一點就是它可以讓你一步一步地優化你的代碼。比如說你有一個Python方法,你發現它是你項目中的瓶頸。你已經對其優化了數次,可能是遵循了這里或這里的意見,現在你確定Python本身是你應用的瓶頸所在。
Python是能夠直接調用C代碼的,這就意味著你可以用C重寫這個方法來減少性能問題。你可以一個一個地進行替換。這個過程能讓你調用任何最終編譯成C兼容指令的優化的代碼,也讓你能在大部分情況下繼續使用Python,而只在真正需要的時候深入底層進行開發。
有一個叫Cython的語言,它是Python的超集。幾乎是Python和C的結合體,同時它是漸進的類型化語言。任何Python代碼都是合法的Cython代碼,Cython會將代碼編譯成C代碼。有了Cython,你可以編寫模塊或方法,漸漸地引入C語言的類型和性能。你可以混合使用C語言的類型和Python的鴨子類型(ducktype)。通過Cython你可以只在瓶頸處進行調優,而在其他地方仍然使用優美的Python語言,兩者能完美地結合。
使用Python編寫的太空大規模多人在線游戲EVEOnline的截圖
當你最終遇到了Python的性能瓶頸,你不需要將你所有代碼移植到其他語言。你總是可以使用Cython重寫部分方法來滿足性能上的需求。這也是游戲EVEOnline所采用的策略。Eve是一個大型多人在線電腦游戲,它完全使用Python和Cython開發。游戲開發人員通過在C/Cython中調優瓶頸來達到游戲級的性能要求。如果游戲都能達到性能上的需求,那么大部分情況都應該可以滿足。
此外,還有其他方法來優化你的Python程序。例如PyPy是一個Python的運行時編譯執行(JIT)的實現,只需要使用PyPy切換默認的Cython,就可以顯著地提升你長時間運行應用的運行時性能,如在網絡服務器上。
讓我們回顧一下文中的要點:
優化你最昂貴的資源。也就是你自己,而不是電腦。
選擇可以有助于快速開發的語言、框架、架構,例如Python。不要只因為運行速度快而選擇某個技術。
當你的應用有性能問題時,找出你應用中性能的瓶頸。
你的瓶頸通常不是CPU或Python本身。
如果你已經優化了算法或其他方面,確定Python的確是你項目的瓶頸,那么可以將這個熱點移到Cython/C中進行改寫。
接下來就坐下來享受快速編碼的樂趣吧。
以上內容為大家介紹了如何優化Python,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.dietsnews.net/