Re: [請益] 請問Python在業界都用來寫什麼居多?

作者: Lordaeron (Terry)   2014-10-11 06:24:01
※ 引述《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是並行計算的框架(大數據處理的效率在於良好的分佈計算邏輯,而不是什麼語言)
暫時就這些,最好說一個方向,否則不知道處理什麼樣的數據也不好推薦包,
所以沒有頭緒從哪裡開始介紹這些包
作者: dlikeayu (太陽拳vs野球拳)   2014-10-11 08:32:00
想知道為何國外或中國那邊在算fb,twitter等巨量分析都還是用python居多?那麼最好的選擇又是什麼?
作者: z101924512   2014-10-11 09:23:00
python + cpython?
作者: Wush978 (拒看低質媒體)   2014-10-11 10:04:00
數據分析的東西, python只是皮, c++才是骨
作者: yauhh (小y寶貝)   2014-10-11 10:06:00
樓上說語言是皮真是太傻了,難道你說英語都是求皮毛工夫嗎一個語言是皮或是骨,都是看它應用的人、應用場合以及效用英語,在台灣的夜店,那就是屁話一堆。英語,用在外交辭令、商業合約以及職場e-mail,則是大器。
作者: Wush978 (拒看低質媒體)   2014-10-11 10:24:00
https://github.com/guestwalk/kaggle-2014-criteo這是最近預測廣告點擊比賽,釋出的原始碼c++是拿來實作核心演算法, python再拿來包外層備註一下, 上面的原始碼的團隊拿到這次比賽的冠軍而導致他們能拿到冠軍的奧秘, 除了知識之外, c++實作力很更正: c++的部分才是奪冠關鍵。至於python的部分則偏向在使用的方便性。現在類似的手法很常見: 核心用c++, 使用用python。這樣就能結合兩種工具的長處。
作者: mingtai1 (綠豆嘉義人)   2014-10-11 10:37:00
腳本+編譯語言並用能兼顧效率跟彈性,Lua幾乎也都這樣玩
作者: hungys (hungys)   2014-10-11 10:54:00
如果單純拿來寫 REST API,不曉得效能會差多少呢,有很多公司這樣用嗎?
作者: mingtai1 (綠豆嘉義人)   2014-10-11 11:13:00
有,我們以前有這樣用.伺服器計算量少 大多在等DB寫入像開心農場那種,瓶頸多在DB架構跟寫入,server計算量不大
作者: lachtchlee (nymph)   2014-10-11 11:31:00
原po好像都在讀對岸的書 ?
作者: ohb (好勝的命運是失落)   2014-10-11 12:09:00
如果產品的內容是大數據分析 python的確不適合 但又不是只有一種產品XD 另外 就算python不能做大數據的coreperipheral 的使用還是比比皆是
作者: Wush978 (拒看低質媒體)   2014-10-11 15:02:00
其實對大多數programmer來說,大數據不是issue某年中研院辦的big data forum中,google的speaker建議大家注重big value, 而不是big data找尋價值比較需要快速的programming, 這是python的強項
作者: Lordaeron (Terry)   2014-10-11 15:19:00
十來年前,滿街都PERL, PYTHON不知在幹嘛, 現在古狗PROMOTE 一下,就變成滿街PYTHON,PERL不知去哪.要快速programming,當然是找script language.
作者: recorriendo (孟新)   2014-10-12 02:30:00
perl寫出來的東西太不美觀 python看起來比較乾淨舒爽
作者: pandakuo (panda)   2014-10-12 07:11:00
PERL寫完隔天只有上帝懂你在寫啥
作者: s25g5d4 (function(){})()   2014-10-12 18:01:00
只有我覺得英語在夜店可以釣到 CCR 嗎...(離題
作者: Lordaeron (Terry)   2014-10-13 10:59:00
這麼慘,哪PERL當年在紅什麼?原來當年的都是上帝?

Links booklink

Contact Us: admin [ a t ] ucptt.com