看板 Soft_Job 關於我們 聯絡資訊
※ 引述《yauhh (喲)》之銘言: : ※ 引述《OoShiunoO (機機勳)》之銘言: : : 小弟剛接觸Python一個月,主要是用它的機器學習套件來作資料分析 : : 用了之後感覺是很好用的一種語言 : : 但是似乎有一種感覺,它不算是一種用來寫大型程式的語言 : : 感覺它好像是用來做小工作 小事情的一種語言 : : 所以小弟好奇,在業界,大家都是用Python來幹嘛比較多呢..? : 想延伸這個問題。你覺得什麼樣的語言才叫做「用來寫大型程式的語言」? : 以前只有 Fortran 的年代,只有 Algol60 的年代,小的,大的都用那個寫。 : 我想問這個問題,想法是,語言要呈現什麼樣的特徵,你會覺得它是個大器的東西。 : 至於執行的速度,應該要排除在語言的選擇之外。 : 看到前面的討論,都說 Python 寫很快但是有效能的狀況。 : 但是,我覺得這樣想是很偏的。 : 你來嘗試 Python ,不是因為考慮 C 的效能,但卻 : 可能是考慮到 C 語言本身是不是很好寫。 : 但是, Python 寫出來的東西 OK 了, : 後來在大量使用的時候遇到效能爆炸的情況時, : 為什麼卻沒有想想,在同樣要觸發效能爆炸的情況下,也許是大量資料或大量使用, : C 有多少比較好? : 也許只是你不知道如何去調整好 Python 的效能啊,是吧。 Script language 適合作驗證, 不適合作產品, 撐不起量. 正如作image processing 的,很多人愛用matlab, 但該不會有人拿它作產品吧? 更別說OpenCV拿來當底的(大陸就幹過了)一樣慢. 而處理大量(GB以上)資料以python 要快, 還望你來一篇教學一下. 以下轉來的(加了點修改) 我很喜歡用python,用python處理數據是家常便飯,從事的工作涉及nlp, 算法,推薦,數據挖掘,數據清洗,數據量級從幾十k到幾T不等,我來說說吧 百萬級別數據是小數據,python處理起來不成問題,python處理數據還是有些問題的 Python處理大數據的劣勢: 1. python線程有gil,通俗說就是多線程的時候只能在一個核上跑, 浪費了多核服務器。在一種常見的場景下是要命的:並發單元之 間有巨大的數據共享或者共用(例如大dict),多進程會導致內存吃緊 ,多線程則解決不了數據共享的問題,單獨的寫一個進程之間負責維護 讀寫這個數據不僅效率不高而且麻煩 2. python執行效率不高,在處理大數據的時候,效率不高,這是真的, pypy(一個jit的python解釋器,可以理解成腳本語言加速執行的東西)能 夠提高很大的速度(可以快10倍),但是pypy不支持很多python經典的包, 例如numpy 3. 絕大部分的大公司,用java處理大數據不管是環境也好,積累也好, 都會好很多 Python處理數據的優勢(不是處理大數據): 1. 異常快捷的開發速度,代碼量巨少 2. 豐富的數據處理包,不管正則也好,html解析啦,xml解析啦,用起來非常方便 3. 內部類型使用成本巨低,不需要額外怎麼操作(java,c++用個map都很費勁) 4. 公司中,很大量的數據處理工作工作是不需要面對非常大的數據的 5. 巨大的數據不是語言所能解決的,需要處理數據的框 架(hadoop, mpi。。。。)雖然小眾,但是python還是有 處理大數據的框架的,或者一些框架也支持python 6. 編碼問題處理起來太太太方便了 綜上所述: 1. python可以處理大數據 2. python處理大數據不一定是最優的選擇 3. python和其他語言(公司主推的方式)並行使用是非常不錯的選擇 4. 因為開發速度,你如果經常處理數據,而且喜歡linux終端,而且 經常處理不大的數據(100m一下),最好還是學一下python python數據處理的包: 1. 自帶正則包, 文本處理足夠了 2. cElementTree, lxml 默認的xml速度在數據量過大的情況下不足 3. beautifulsoup 處理html 4. hadoop(可以用python) 並行處理,支持python寫的map reduce,足夠了, 順便說一下阿里巴巴的odps,和hadoop一樣的東西,支持python寫的udf, 嵌入到sql語句中 5. numpy, scipy, scikit-learn 數值計算,數據挖掘 6. dpark(搬樓上的答案)類似hadoop一樣的東西 1,2,3,5是處理文本數據的利器(python不就處理文本數據方便嘛), 4,6是並行計算的框架(大數據處理的效率在於良好的分佈計算邏輯,而不是什麼語言) 暫時就這些,最好說一個方向,否則不知道處理什麼樣的數據也不好推薦包, 所以沒有頭緒從哪裡開始介紹這些包 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.120.230 ※ 文章網址: http://www.ptt.cc/bbs/Soft_Job/M.1412979844.A.A8D.html
dlikeayu: 想知道為何國外或中國那邊在算fb,twitter等巨量分析都 10/11 08:32
dlikeayu: 還是用python居多?那麼最好的選擇又是什麼? 10/11 08:32
z101924512: python + cpython? 10/11 09:23
Wush978: 數據分析的東西, python只是皮, c++才是骨 10/11 10:04
yauhh: 樓上說語言是皮真是太傻了,難道你說英語都是求皮毛工夫嗎 10/11 10:06
yauhh: 一個語言是皮或是骨,都是看它應用的人、應用場合以及效用 10/11 10:07
yauhh: 英語,在台灣的夜店,那就是屁話一堆。 10/11 10:07
yauhh: 英語,用在外交辭令、商業合約以及職場e-mail,則是大器。 10/11 10:08
Wush978: 這是最近預測廣告點擊比賽,釋出的原始碼 10/11 10:24
Wush978: c++是拿來實作核心演算法, python再拿來包外層 10/11 10:25
Wush978: 備註一下, 上面的原始碼的團隊拿到這次比賽的冠軍 10/11 10:30
Wush978: 而導致他們能拿到冠軍的奧秘, 除了知識之外, c++實作力很 10/11 10:31
Wush978: 更正: c++的部分才是奪冠關鍵。至於python的部分則偏向在 10/11 10:32
Wush978: 使用的方便性。現在類似的手法很常見: 核心用c++, 使用用 10/11 10:33
Wush978: python。這樣就能結合兩種工具的長處。 10/11 10:33
mingtai1: 腳本+編譯語言並用能兼顧效率跟彈性,Lua幾乎也都這樣玩 10/11 10:37
hungys: 如果單純拿來寫 REST API,不曉得效能會差多少呢,有很多 10/11 10:54
hungys: 公司這樣用嗎? 10/11 10:54
mingtai1: 有,我們以前有這樣用.伺服器計算量少 大多在等DB寫入 10/11 11:13
mingtai1: 像開心農場那種,瓶頸多在DB架構跟寫入,server計算量不大 10/11 11:16
lachtchlee: 原po好像都在讀對岸的書 ? 10/11 11:31
ohb: 如果產品的內容是大數據分析 python的確不適合 但又不是只 10/11 12:09
ohb: 有一種產品XD 另外 就算python不能做大數據的core 10/11 12:10
ohb: peripheral 的使用還是比比皆是 10/11 12:10
Wush978: 其實對大多數programmer來說,大數據不是issue 10/11 15:02
Wush978: 某年中研院辦的big data forum中,google的speaker 10/11 15:04
Wush978: 建議大家注重big value, 而不是big data 10/11 15:04
Wush978: 找尋價值比較需要快速的programming, 這是python的強項 10/11 15:09
Lordaeron: 十來年前,滿街都PERL, PYTHON不知在幹嘛, 現在古狗 10/11 15:19
Lordaeron: PROMOTE 一下,就變成滿街PYTHON,PERL不知去哪. 10/11 15:20
Lordaeron: 要快速programming,當然是找script language. 10/11 15:21
recorriendo: perl寫出來的東西太不美觀 python看起來比較乾淨舒爽 10/12 02:30
pandakuo: PERL寫完隔天只有上帝懂你在寫啥 10/12 07:11
s25g5d4: 只有我覺得英語在夜店可以釣到 CCR 嗎...(離題 10/12 18:01
Lordaeron: 這麼慘,哪PERL當年在紅什麼?原來當年的都是上帝? 10/13 10:59