奇酷教育詳解:Python適合大數(shù)據(jù)量的處理嗎?
來源:
奇酷教育 發(fā)表于:
隨著大數(shù)據(jù)相關(guān)產(chǎn)業(yè)的火熱,關(guān)于使用哪種語言的討論也引起不少人的關(guān)注,其中最有爭議的還屬Java和Python,那么Python能處理數(shù)據(jù)庫中百
隨著大數(shù)據(jù)相關(guān)產(chǎn)業(yè)的火熱,關(guān)于使用哪種語言的討論也引起不少人的關(guān)注,其中最有爭議的還屬Java和Python,那么Python能處理數(shù)據(jù)庫中百萬行級的數(shù)據(jù)嗎?處理大規(guī)模數(shù)據(jù)時有那些常用的python庫,他們有什么優(yōu)缺點?適用范圍如何?
需要澄清兩點之后才可以比較全面的看這個問題:
1. 百萬行級不算大數(shù)據(jù)量,以目前的互聯(lián)網(wǎng)應(yīng)用來看,大數(shù)據(jù)量的起點是10億條以上。
2. 處理的具體含義,如果是數(shù)據(jù)載入和分發(fā),用python是很高效的;如果是求一些常用的統(tǒng)計量和求一些基本算法的結(jié)果,python也有現(xiàn)成的高效的庫,C實現(xiàn)的和并行化的;如果是純粹自己寫的算法,沒有任何其他可借鑒的,什么庫也用不上,用純python寫是自討苦吃。
python的優(yōu)勢不在于運行效率,而在于開發(fā)效率和高可維護(hù)性。針對特定的問題挑選合適的工具,本身也是一項技術(shù)能力。
其次,這也要看具體的應(yīng)用場景,從本質(zhì)上來說,我們把問題分解為兩個方面:
1、CPU密集型操作
即我們要計算的大數(shù)據(jù),大部分時間都在做一些數(shù)據(jù)計算,比如求逆矩陣、向量相似度、在內(nèi)存中分詞等等,這種情況對語言的高效性非常依賴,Python做此類工作的時候必然性能低下。
2、IO密集型操作
假如大數(shù)據(jù)涉及到頻繁的IO操作,比如從數(shù)據(jù)流中每次讀取一行,然后不做什么復(fù)雜的計算,頻繁的輸入輸出到文件系統(tǒng),由于這些操作都是調(diào)用的操作系統(tǒng)接口,所以用什么語言已經(jīng)不在重要了。
用Python來做整個流程的框架,然后核心的CPU密集操作部分調(diào)用C函數(shù),這樣開發(fā)效率和性能都不錯,因此學(xué)習(xí)Python已經(jīng)是想從事大數(shù)據(jù)事業(yè)不可或缺的一門技能,奇酷教育原創(chuàng)開發(fā)的Python課程不僅涵蓋Web前后端開發(fā)和網(wǎng)絡(luò)爬蟲技術(shù),還包括獨有的數(shù)據(jù)分析和機(jī)器學(xué)習(xí),前端、服務(wù)端一網(wǎng)打盡??蓮氖耊eb前端、Web服務(wù)端、服務(wù)器運維、網(wǎng)絡(luò)爬蟲、大數(shù)據(jù)分析、機(jī)器學(xué)習(xí)等多種熱門職業(yè),百分百高薪就業(yè)!