2.1 Python語言的應用領域
1.云計算基礎設施
云計算平臺分為私有云和公有云。私有云平臺如大名鼎鼎的OpenStack(很多企業用其部署自己的私有云),是Python編程語言編寫的。公有云,不論是AWS、Azure、GCE(Google Compute Engine),還是阿里云和青云,都提供了Python SDK,其中GCE只提供Python和JavaScript的SDK,而青云只提供Python SDK,可見各家云平臺對Python的重視。
說明
軟件開發工具包(Software Development Kit,SDK)指的是軟件工程師為特定的軟件包、軟件框架、硬件平臺、操作系統等創建應用軟件時使用的開發工具的集合。
2.DevOps
互聯網時代,只有快速試驗新想法,并在第一時間安全、可靠地交付業務價值,才能保持競爭力。DevOps推崇的自動化構建、測試、部署,以及系統度量等技術實踐,是互聯網時代必不可少的。
自動化構建(持續集成)是為應用定制的。如果是Python應用,因為有setuptools、pip、virtualenv及tox等工具的存在,實現自動化構建非常簡單。而且,因為幾乎所有的Linux版本都內置了Python解釋器,所以在用Python做自動化時,不需要預安裝其他軟件。
自動化測試則是基于Python的Robot Framework企業級應用最喜歡的自動化測試框架實現的,而且和語言無關。自動化測試工具Cucumber有很多支持者,事實上,Python對應的Lettuce一樣好用。此外,Locust(一款基于Python開發的開源負載測試工具)在自動化性能測試方面也開始受到越來越多的關注。后起之秀Selenium,一款Web自動化測試的輕量級框架,現在也已經被越來越多的公司應用。Selenium的主要特點是具有開源性、跨平臺性,且有眾多的編程語言支持,除了可以用Python編寫測試用例以外,也可以用Java、PHP甚至Shell來編寫測試用例。
自動化運維(自動化配置管理)工具,新生代Ansible、SaltStack,以及輕量級的自動化運維工具Fabric,均是基于Python開發的。由于較前兩者而言,Fabric的設計更為輕量化和模塊化,而且很容易實現二次開發,因此受到越來越多開發者的歡迎,很多公司同時用它們來完成自動化運維工作。
3.網絡爬蟲
大數據的數據從哪里來?除了部分企業有能力自己產生大量的數據以外,大部分情況下,是需要靠爬蟲抓取互聯網數據來做分析的。
網絡爬蟲是Python的傳統強勢領域,流行的爬蟲框架Scrapy、HTTP工具包urllib+urllib2、HTML解析工具Beautiful Soup 4、XML解析器lxml等,都是能夠獨當一面的類庫。筆者公司的分布式網絡爬蟲系統也是基于Scrapy開發的。不過,網絡爬蟲并不僅僅是打開網頁,解析HTML這么簡單。高效的爬蟲要能夠支持大量靈活的并發操作,常常要針對幾千甚至上萬個網頁同時抓取,傳統的線程池方式資源浪費比較大,線程數上千之后系統資源基本上就全浪費在線程調度上了。Python能夠很好地支持協程(Coroutine)操作,故而基于此發展了很多并發庫,如Gevent、Eventlet,還有Celery之類的分布式任務框架等。被認為比AMQP更高效的ZeroMQ也是最早提供Python版本的。有了對高并發的支持,網絡爬蟲才真正可以達到大數據規模。
4.數據處理
從統計理論,到數據挖掘、機器學習,再到最近幾年提出來的深度學習理論,數據科學正處于百花齊放的時代。數據科學家們都用什么語言編程呢?Python是數據科學家最喜歡的語言之一。和R語言不同,Python本身就是一種工程性語言,數據科學家用Python實現的算法,可以直接用在產品中,這對大數據初創公司節省成本是非常有幫助的。正是基于數據科學家對Python和R的熱愛,Spark對這兩種語言提供了非常好的支持。
Python的數據處理相關類庫非常多。高性能的科學計算類庫NumPy和SciPy,給其他高級算法打了非常好的基礎,Matploglib讓Python畫圖變得像Matlab一樣簡單。Scikit-learn和Milk實現了很多機器學習算法,基于這兩個庫實現的Pylearn2,是深度學習領域的重要成員。Theano利用GPU加速,實現了高性能數學符號計算和多維矩陣計算。當然,還有Pandas,一個在工程領域已經廣泛使用的大數據處理類庫,其DataFrame的設計借鑒自R語言,后來又啟發Spark項目實現了類似機制。
除了這些領域以外,Python還可以被廣泛應用于Web開發、游戲開發、手機開發、數據庫開發等眾多領域。
- Linux設備驅動開發詳解:基于最新的Linux4.0內核
- 蘋果電腦玩全攻略 OS X 10.8 Mountain Lion
- 操作系統基礎與實踐:基于openEuler平臺
- Haskell Financial Data Modeling and Predictive Analytics
- Joomla! 3 Template Essentials
- ElasticSearch Cookbook
- 操作系統分析
- Introduction to R for Quantitative Finance
- Windows 7實戰從入門到精通
- 鴻蒙操作系統設計原理與架構
- Windows Server 2008組網技術與實訓(第3版)
- Docker容器技術與應用
- OpenStack Essentials(Second Edition)
- Implementing Cloud Design Patterns for AWS(Second Edition)
- Hadoop Operations and Cluster Management Cookbook