※ 本文為 dinos 轉寄自 ptt.cc 更新時間: 2014-10-11 09:41:24
看板 Soft_Job
作者 標題 Re: [請益] 請問Python在業界都用來寫什麼居多?
時間 Sat Oct 11 06:24:01 2014
※ 引述《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
夠提高很大的速度(可以快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語句中
順便說一下阿里巴巴的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
→ : 想知道為何國外或中國那邊在算fb,twitter等巨量分析都1F 10/11 08:32
→ : 還是用python居多?那麼最好的選擇又是什麼?
→ : 還是用python居多?那麼最好的選擇又是什麼?
推 : python + cpython?3F 10/11 09:23
--
※ 看板: dinos 文章推薦值: 0 目前人氣: 0 累積人氣: 2529
作者 Lordaeron 的最新發文:
- 7F 2推
- 8F 2推
- 58F 8推 4噓
- Bank 古時候是IBM 的全套的天下,主要是軟體帶著硬體在賣,幾乎獨佔。 電信業 古時候是UNIX,多的是Solaris 的天下。 這沒什麼好討論的了吧。 現在才有外圍的系統以Windows 為後 …43F 16推 1噓
- 11F 4推
點此顯示更多發文記錄
瞎
guest
回列表(←)
分享