- Python高性能編程(第2版)
- (美)米夏·戈雷利克等
- 1196字
- 2023-09-06 19:21:25
1.3 為何使用Python
Python的表達能力極強,還易于學習,新手很快就會發現,他們能夠在很短的時間內完成很多任務。很多Python庫都封裝了使用其他語言編寫的工具,讓你能夠輕松地調用其他系統。例如,機器學習系統scikit-learn包含LIBLINEAR和LIBSVM(它們都是使用C語言編寫的),而numpy包含BLAS以及其他C和Fortran語言庫。因此,如果Python代碼能正確地利用這些模塊,其速度將可與C代碼媲美。
Python被認為是“開箱即用”的,因為它內置了很多重要的工具和穩定的庫。
● unicode和bytes:身處Python語言的核心。
● array:基本類型數組,內存使用效率高。
● math:基本數學運算,包括一些簡單的統計計算。
● sqlite3:封裝了基于文件的流行SQL引擎SQLite3。
● collections:各種對象,包括雙向隊列、計數器和字典的變種。
● asyncio:使用async和await語法為I/O密集型任務提供并發支持。
除上述語言核心庫外,還有大量的外部庫。
● numpy:一個Python數值運算庫,是各種矩陣運算的基石。
● scipy:包含眾多值得信賴的科學庫,這些科學庫通常封裝了備受尊崇的C和Fortran語言庫。
● pandas:一個數據分析庫,建立在scipy和numpy的基礎之上,類似于R數據框架(data frame)和Excel電子表格。
● scikit-learn:正快速成為默認的機器學習庫,建立在scipy的基礎之上。
● tornado:讓你能夠輕松地實現并發的庫。
● PyTorch和TensorFlow:分別來自Facebook和Google的深度學習框架,提供了強大的Python和GPU支持。
● NLTK、SpaCy和Gensim:提供了強大Python支持的自然語言處理庫。
● 數據庫綁定(database binding):用于同各種數據庫通信,包括Redis、MongoDB、HDF5和SQL。
● Web開發框架:用于創建網站的高性能系統,如aiohttp、django、pyramid、flask和tornado。
● OpenCV:提供計算機視覺的綁定。
● API綁定:讓你能夠輕松地使用流行的Web API,如Google、Twitter和LinkedIn。
還有大量受控環境和shell,可滿足各種部署需求。
● 標準發行版。
● pipenv、pyenv和virtualenv:用于搭建簡單、可移植的輕量級Python環境。
● Docker:用于搭建可重現的簡單開發和生產環境。
● Anaconda:專注于科學計算的環境。
● Sage:一個類似于Matlab的環境,但包含集成開發環境(Integrated Development Environment,IDE)。
● IPython:一個被科學家和開發人員廣泛使用的交互式Python shell。
● Jupyter Notebook:一個基于瀏覽器的IPython擴展,被廣泛用于教學和演示。
Python的主要優點之一是,讓你能夠快速建立想法的原型。因為有眾多的支持庫,所以很容易檢查想法是否可行,即便你的實現相當粗糙。
要提高數學函數的速度,可考慮使用numpy;要嘗試機器學習,可考慮使用scikit-learn;而要清理和操作數據,pandas是不錯的選擇。
那么問題來了:長期看,為讓系統運行得更快,會不會導致團隊的開發速度降低呢?只要投入足夠的精力,總是可以進一步提高系統的性能,但這可能導致所做的優化脆弱而難以理解,最終給團隊帶來障礙。
一個這樣的例子是使用Cython(請參見7.6節)。Cython是一種基于編譯器的方法,它通過添加C類型聲明來修改Python代碼,以便能夠使用C語言編譯器進行編譯。這雖然可極大地提高速度(通常只需做少量工作就可讓速度與C語言代碼媲美),但為支持這些代碼而付出的代價將增加。具體地說,支持新模塊的工作可能更難,因為為繞開Python虛擬機以提升性能,可能需要做些折中,而要搞明白這些折中,團隊成員必須有更高的編程技能。
- GraphQL學習指南
- R語言經典實例(原書第2版)
- Oracle 11g從入門到精通(第2版) (軟件開發視頻大講堂)
- Mastering Objectoriented Python
- C# 從入門到項目實踐(超值版)
- JS全書:JavaScript Web前端開發指南
- SQL Server與JSP動態網站開發
- Python機器學習:預測分析核心算法
- Python3.5從零開始學
- 智能手機故障檢測與維修從入門到精通
- C++程序設計教程(第2版)
- 軟件測試技術
- Visual Basic程序設計基礎
- Implementing Domain:Specific Languages with Xtext and Xtend
- 前端程序員面試算法寶典