前段時間,ThoughtWorks在深圳舉辦一次社區活動上,有一個演講主題叫做“Fullstack JavaScript”,是關於用JavaScript進行前端、伺服器端,甚至資料庫(MongoDB)開發,一個Web應用開發人員,只需要學會一門語言,就可以實現整個應用。
受此啟發,我發現Python可以稱為大數據全端式開發語言。因為Python在雲端基礎設施,DevOps,大數據處理等領域都是炙手可熱的語言。
# 領域 | 流行語言 |
---|---|
# 雲端基礎設施 | Python, Java, Go |
# DevOps | Python, Shell, Ruby, Go |
# 網路爬蟲 | Python, PHP, C++ |
# 資料處理 | Python, R, Scala |
就像只要會JavaScript就可以寫出完整的Web應用,只要會Python,就可以實現一個完整的大數據處理平台。
# 雲端基礎設施
這年頭,不支援雲端平台,不支援大量數據,不支援動態伸縮,根本不敢說自己是做大數據的,頂多也就敢跟人說是做商業智慧(BI)。
雲平台分為私有雲和公有雲。私有雲平台如日中天的OpenStack,就是Python寫的。曾經的追趕者CloudStack,剛推出時大肆強調自己是Java寫的,比Python有優勢。結果,搬石砸腳,2015年初,CloudStack的發起人Citrix宣布加入OpenStack基金會,CloudStack眼看著就要壽終正寢。
如果嫌麻煩不想自己搭建私有雲,用公有雲,不論是AWS,GCE,Azure,還是阿里雲,青雲,在都提供了Python SDK,其中GCE只提供Python和JavaScript的SDK,而青雲只提供Python SDK 。可見各家雲端平台對Python的重視。
提到基礎設施搭建,不得不提Hadoop,在今天,Hadoop因為其MapReduce數據處理速度不夠快,已經不再作為大數據處理的首選,但是HDFS和Yarn——Hadoop的兩個組件——倒是越來越受歡迎。 Hadoop的開發語言是Java,沒有官方提供Python支持,不過有很多第三方函式庫封裝了Hadoop的API介面(pydoop,hadoopy等等)。
Hadoop MapReduce的替代者,是號稱快上100倍的Spark,其開發語言是Scala,但是提供了Scala,Java,Python的開發接口,想要討好那麼多用Python開發的數據科學家,不支持Python,真是說不過去。 HDFS的替代品,如GlusterFS,Ceph等,都是直接提供Python支援。 Yarn的替代者,Mesos是C++實現,除C++外,提供了Java和Python的支援包。
DevOps
DevOps有個中文名字,叫做開發自運維。網路時代,只有能夠快速試驗新想法,並在第一時間,安全、可靠的交付業務價值,才能保持競爭力。 DevOps推崇的自動化建置/測試/部署,以及系統度量等技術實踐,是網路時代必不可少的。
自動化建置是因為應用而易的,如果是Python應用,因為有setuptools, pip, virtualenv, tox, flake8等工具的存在,自動化建置非常簡單。而且,因為幾乎所有Linux系統都內建Python解釋器,所以用Python做自動化,不需要係統預先安裝什麼軟體。
自動化測試方面,基於Python的Robot Framework企業級應用最喜歡的自動化測試框架,而且和語言無關。 Cucumber也有很多支持者,Python對應的Lettuce可以做到完全一樣的事。 Locust在自動化效能測試方面也開始受到越來越多的關注。
自動化配置管理工具,老牌的如Chef和Puppet,是Ruby開發,目前仍保持著強勁的勢頭。不過,新生代Ansible和SaltStack——都是Python開發——因為較前兩者設計更為輕量化,受到越來越多開發這的歡迎,已經開始給前輩們製造了不少的壓力。
在系統監控與度量方面,傳統的Nagios逐漸沒落,新貴如Sensu大受好評,雲端服務形式的New Relic已成為新創公司的標配,這些都不是直接透過Python實現的,不過Python要接入這些工具,並不困難。
除了上述這些工具,基於Python,提供完整DevOps功能的PaaS平台,如Cloudify和Deis,雖未成氣候,但已經得到大量關注。
網路爬蟲
大數據的資料從哪裡來?除了部分企業有能力自己產生大量的數據,大部分時候,是需要靠爬蟲來抓取網路數據來做分析。
網路爬蟲是Python的傳統強勢領域,最受歡迎的爬蟲框架Scrapy,HTTP工具包urlib2,HTML解析工具beautifulsoup,XML解析器lxml,等等,都是能夠獨當一面的類別庫。
不過,網路爬蟲並不是打開網頁,解析HTML這麼簡單。高效率的爬蟲要能支援大量靈活的並發操作,常常要能夠同時幾千甚至上萬個網頁同時抓取,傳統的線程池方式資源浪費比較大,線程數上千之後系統資源基本上就全浪費在線程調度上了。 Python由於能夠很好的支援協程(Coroutine)操作,基於此發展起來很多並發函式庫,如Gevent,Eventlet,還有Celery之類的分散式任務框架。被認為是比AMQP更有效率的ZeroMQ也是最早就提供了Python版本。有了對高併發的支持,網路爬蟲才真正可以達到大數據規模。
抓取下來的數據,需要做分詞處理,Python在這方面也不遜色,著名的自然語言處理程序包NLTK,還有專門做中文分詞的Jieba,都是做分詞的利器。
資料處理
萬事俱備,只欠東風。這東風,就是資料處理演算法。從統計理論,到資料挖掘,機器學習,再到最近幾年提出的深度學習理論,資料科學正處於百花齊放的時代。資料科學家都用什麼程式?
如果是在理論研究領域,R語言也許是最受資料科學家歡迎的,但是R語言的問題也很明顯,因為是統計學家們創建了R語言,所以其語法略顯怪異。而且R語言要實現大規模分散式系統,還需要很長一段時間的工程路要走。所以很多公司使用R語言做原型試驗,演算法確定之後,再翻譯成工程語言。
Python也是資料科學家最喜歡的語言之一。和R語言不同,Python本身就是一門工程性語言,資料科學家用Python實現的演算法,可以直接用在產品中,這對大數據新創公司節省成本是非常有幫助的。正式因為資料科學家對Python和R的熱愛,Spark為了討好資料科學家,對這兩種語言提供了非常好的支持。
Python的資料處理相關類別庫非常多。高效能的科學計算類別庫NumPy和SciPy,給其他高階演算法打了非常好的基礎,matploglib讓Python畫圖變得像Matlab一樣簡單。 Scikit-learn和Milk實作了許多機器學習演算法,基於這兩個函式庫實現的Pylearn2,是深度學習領域的重要成員。 Theano利用GPU加速,實現了高效能數學符號運算和多維矩陣運算。當然,還有Pandas,一個在工程領域已經廣泛使用的大數據處理類別庫,其DataFrame的設計借鑒自R語言,後來又啟發了Spark專案實現了類似機制。
對了,還有iPython,這個工具如此有用,以至於我差點把他當成標準庫而忘了介紹。 iPython是一個互動式Python運行環境,能夠即時看到每一段Python程式碼的結果。預設情況下,iPython運行在命令列,可以執行ipython notebook在網頁中運行。用matplotlib繪製的圖可以直接嵌入式的顯示在iPython Notebook。
iPython Notebook的筆記本檔案可以分享給其他人,讓其他人可以在自己的環境中重現你的工作成果;如果對方沒有運作環境,還可以直接轉換成HTML或PDF。
# 為什麼是Python
# 正是因為應用開發工程師、維運工程師、資料科學家都喜歡Python,才使得Python成為大數據系統的全端開發語言。
對於開發工程師而言,Python的優雅和簡潔無疑是最大的吸引力,在Python互動式環境中,執行import this,讀一讀Python之禪,你就明白Python為什麼如此吸引人。 Python社群一直非常有活力,和NodeJS社群軟體套件爆炸性成長不同,Python的軟體套件成長速度一直比較穩定,同時軟體套件的品質也相對較高。有很多人詬病Python對於空格的要求過於苛刻,但正是因為這個要求,才使得Python在做大型專案時比其他語言有優勢。 OpenStack專案總共超過200萬行程式碼,證明了這一點。
對於運維工程師而言,Python的最大優勢在於,幾乎所有Linux發行版都內建了Python解釋器。 Shell雖然功能強大,但畢竟文法不夠優雅,寫比較複雜的任務會很痛苦。用Python取代Shell,做一些複雜的任務,對維運人員來說,是一次解放。
對於資料科學家而言,Python簡單又不失強大。和C/C++相比,不用做很多的底層工作,可以快速進行模型驗證;和Java相比,Python語法簡潔,表達能力強,同樣的工作只需要1/3程式碼;和Matlab,Octave相比, Python的工程成熟度較高。不只一個程式設計大牛表達過,Python是最適合作為大學電腦科學程式設計課程使用的語言——MIT的電腦入門課程就是使用的Python——因為Python能夠讓人們學到程式設計最重要的東西——如何解決問題。
順便提一句,微軟參加2015年PyCon,高調宣布提高Python在Windows上的程式設計體驗,包括Visual Studio支援Python,優化Python的C擴充在Windows上的編譯等等。腦補下未來Python作為Windows預設元件的場景。
以上是大數據全端開發語言 – Python的詳細內容。更多資訊請關注PHP中文網其他相關文章!

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...

如何使用正則表達式匹配到第一個閉合標籤就停止?在處理HTML或其他標記語言時,常常需要使用正則表達式來�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Dreamweaver CS6
視覺化網頁開發工具