亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 強(qiáng)調(diào)實(shí)用主義——采訪Python專(zhuān)家HyryStudio [打印本頁(yè)]

作者: 無(wú)風(fēng)之谷    時(shí)間: 2012-05-29 14:36
標(biāo)題: 強(qiáng)調(diào)實(shí)用主義——采訪Python專(zhuān)家HyryStudio
本期采訪嘉賓:張若愚(HyryStudio)

日本神戶制鋼綜合研究所從事研究開(kāi)發(fā)工作,研究方向?yàn)椋呵度胧紻SP信號(hào)處理系統(tǒng)開(kāi)發(fā),嵌入式MCU控制系統(tǒng)開(kāi)發(fā),工業(yè)控制軟件開(kāi)發(fā),信號(hào)處理、數(shù)據(jù)處理以及生產(chǎn)系統(tǒng)的計(jì)算機(jī)模擬。

歡迎大家跟帖提問(wèn),我們對(duì)于跟帖提問(wèn)的網(wǎng)友給予30積分的獎(jiǎng)勵(lì)。更多訪談?wù)堦P(guān)注ChinaUnix訪談錄:http://star.chinaunix.net/

ChinaUnix社區(qū):
     張先生您好!很高興您能夠接受ChinaUnix的采訪,能夠給大家簡(jiǎn)單地介紹一下?

HyryStudio:
     我2000年到日本留學(xué),2004年碩士畢業(yè)之后一直在神戶制鋼的綜合研究所從事研究開(kāi)發(fā)工作。工作內(nèi)容主要有DSP和MCU的嵌入式開(kāi)發(fā),工業(yè)控 制軟件開(kāi)發(fā),以及一些信號(hào)處理、控制方面的內(nèi)容。在工作中我逐漸使用Python解決各種問(wèn)題,目前Python已經(jīng)是我最主要的開(kāi)發(fā)語(yǔ)言。

ChinaUnix社區(qū):
     在好多技術(shù)開(kāi)發(fā)人員眼中,Python可能只是一個(gè)腳本語(yǔ)言,現(xiàn)在大量的Python框架的流行,讓Python有了向企業(yè) 級(jí)應(yīng)用架構(gòu)進(jìn)軍的機(jī)會(huì),但是從您的圖書(shū)的題目中我們能夠看到,Python其實(shí)也是科學(xué)計(jì)算中的一個(gè)好手,能夠簡(jiǎn)單地介紹一下Pytho科學(xué)計(jì)算的歷史及 現(xiàn)在的應(yīng)用前景么?

HyryStudio:
      正如 Eric Jones 為《Python科學(xué)計(jì)算》所作的序中提到的,Python自從誕生以來(lái)就一直和科學(xué)計(jì)算有著十分密切的聯(lián)系。前期的許多Python研討會(huì)都是在美國(guó)的各個(gè)研究機(jī)構(gòu)舉辦的。Python 1.0誕生于1994年,而目前Python科學(xué)計(jì)算最核心的擴(kuò)展庫(kù) NumPy 的前身Numeric在1995年就已發(fā)布。當(dāng)時(shí)網(wǎng)絡(luò)應(yīng)用還未發(fā)展起來(lái),Python可能更多的是運(yùn)用于系統(tǒng)管理腳本以及一些計(jì)算任務(wù)。在2005年左右 NumPy將當(dāng)時(shí)的兩個(gè)數(shù)組處理擴(kuò)展庫(kù)Numeric和Numarray進(jìn)行合并統(tǒng)一,成為Python科學(xué)計(jì)算最核心的擴(kuò)展庫(kù)。在NumPy基礎(chǔ)之上, 發(fā)展出了很多Python專(zhuān)用的科學(xué)計(jì)算擴(kuò)展庫(kù),而許多開(kāi)源函數(shù)庫(kù)也提供了Python的綁定,例如OpenCV、VTK,這些擴(kuò)展庫(kù)也通常會(huì)使用 NumPy的數(shù)組和Python交換數(shù)據(jù)。
目前Python在科學(xué)計(jì)算界的應(yīng)用已經(jīng)十分廣泛。從2008年開(kāi)始每年都舉辦了Python科學(xué)計(jì)算方面的會(huì)議,從中我們可以看到Python在各個(gè)領(lǐng)域的運(yùn)用。而在今年的 PyCon2012 中,科學(xué)計(jì)算方面的內(nèi)容更是占據(jù)了相當(dāng)大的部分。
      實(shí)際上許多工程師、科學(xué)家并非專(zhuān)職的程序員,他們需要一種簡(jiǎn)單易學(xué)、功能強(qiáng)大而且免費(fèi)開(kāi)源的開(kāi)發(fā)環(huán)境幫助他們解決工作中遇到的實(shí)際問(wèn)題。 Python以及其眾多的擴(kuò)展庫(kù)就構(gòu)成了這樣一個(gè)生態(tài)環(huán)境。他們可以編寫(xiě)簡(jiǎn)單的腳本做一些快速的數(shù)據(jù)處理,或者編寫(xiě)功能完整的計(jì)算、仿真應(yīng)用程序,還可以 將現(xiàn)有的C、Fortran函數(shù)庫(kù)包裝成Python的擴(kuò)展庫(kù)。每位技術(shù)人員都能從Python的生態(tài)環(huán)境受益。

ChinaUnix社區(qū):        

      其實(shí)我們也能夠看到,開(kāi)源軟件在科學(xué)等領(lǐng)域有很深遠(yuǎn)的影響,比如在科學(xué)計(jì)算、生物信息學(xué)等方面,都有非常有名的開(kāi)源軟件,能夠簡(jiǎn)單地和我們介紹一些在科學(xué)計(jì)算方面Python社區(qū)有哪些比較有名的項(xiàng)目或者函數(shù)庫(kù)么?

HyryStudio:
      Python一直保持著很強(qiáng)的實(shí)用主義,它通常不會(huì)去試著重新開(kāi)發(fā)一整套函數(shù)庫(kù),而是將現(xiàn)有的開(kāi)源函數(shù)庫(kù)包裝成其擴(kuò)展庫(kù)。而Python則通過(guò)這些擴(kuò)展庫(kù)將眾多的開(kāi)源函數(shù)庫(kù)連接在一起,是名符其實(shí)的膠水語(yǔ)言。例如由華盛頓大學(xué)的教授主導(dǎo)開(kāi)發(fā)的 Sage ,就是一套以代替MATLAB、Mathematica、Maple等商用科學(xué)計(jì)算軟件為目的的開(kāi)源系統(tǒng)。它通過(guò)Python結(jié)合了眾多的開(kāi)源科學(xué)計(jì)算軟件,并通過(guò)網(wǎng)頁(yè)瀏覽器提供了一個(gè)與其交互的記事本文檔界面。
Python的科學(xué)計(jì)算擴(kuò)展庫(kù)非常多,不同專(zhuān)業(yè)的技術(shù)人員都可以找到適合自己的擴(kuò)展庫(kù)。下面是我經(jīng)常會(huì)用到的一個(gè)非常不完全的列表:
•        NumPy + SciPy + matplotlib + IPython : 這幾個(gè)應(yīng)該是每位開(kāi)發(fā)者都應(yīng)具備的擴(kuò)展庫(kù)。NumPy提供了多維數(shù)組以及眾多的處理函數(shù),SciPy提供了各種數(shù)值運(yùn)算功能,matplotlib能繪制 出精美的二維圖表,IPython則提供了一個(gè)超強(qiáng)的命令行,最新版的IPython還添加于Sage類(lèi)似的瀏覽器的記事本界面(notebook)。
•        SciKits : 其中包括許多獨(dú)立的擴(kuò)展庫(kù),作為SciPy的補(bǔ)充。其中 scikit-learn 是一套機(jī)器學(xué)習(xí)庫(kù),包含了比較完善的文檔以及眾多的實(shí)例程序。
•        Pandas : 以Python世界中 R 的替代品為目標(biāo)的數(shù)據(jù)分析庫(kù)。根據(jù)其官方網(wǎng)站的測(cè)試,Pandas在許多方面的性能都比R要高。
•        ETS : 這是一套Enthought公司開(kāi)發(fā)的函數(shù)庫(kù),其中的 Mayavi 能很方便地對(duì)數(shù)據(jù)進(jìn)行三維可視化。
•        OpenCV : 這是一套計(jì)算機(jī)視覺(jué)庫(kù),目前的最新版本已經(jīng)提供了十分完備的Python接口,能夠調(diào)用OpenCV中眾多的圖像處理、模式識(shí)別函數(shù)直接對(duì)NumPy數(shù)組進(jìn)行處理。

ChinaUnix社區(qū):
      因?yàn)榭茖W(xué)計(jì)算的特殊性,能夠簡(jiǎn)單介紹一下Python在這個(gè)領(lǐng)域有哪些優(yōu)勢(shì)以及應(yīng)用的場(chǎng)景,這個(gè)語(yǔ)言本身將來(lái)會(huì)有哪些進(jìn)步呢?

HyryStudio:
      大多數(shù)工程師、科學(xué)家使用科學(xué)計(jì)算軟件的目的都是為了快速解決其工作中遇到的問(wèn)題,而不是開(kāi)發(fā)出一套完整的軟件。這就是為什么MATLAB這樣的商 用科學(xué)計(jì)算軟件十分流行的原因。而Python在這一點(diǎn)上實(shí)際上和MATLAB十分相似,我們也可以使用Python眾多的擴(kuò)展庫(kù)快速寫(xiě)出一次性的數(shù)據(jù)處 理、運(yùn)算的腳本。然而由于Python語(yǔ)言的一些高級(jí)特性,以及眾多的科學(xué)計(jì)算之外的擴(kuò)展庫(kù),我們可以將積累下來(lái)的一次性腳本進(jìn)行改造,為它們提供命令行、GUI、 數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)等眾多接口,最終成為一套完整的工具包或者實(shí)用的計(jì)算軟件。而且由于是開(kāi)源的自由軟件,我們可以在任何系統(tǒng)中安裝Python環(huán)境,運(yùn)行我們 的程序。我工作中所接觸的所有計(jì)算機(jī)以及家中的電腦中都安裝了Python環(huán)境,隨時(shí)有了一個(gè)想法都可以立即打開(kāi)電腦實(shí)現(xiàn)試試看,這對(duì)于需要授權(quán)的商用軟 件來(lái)說(shuō)是無(wú)法想象的。
      目前Python正處在2.x版本和3.x版本并存的時(shí)代,3.x將2.x中一些不合理、過(guò)時(shí)的設(shè)計(jì)剔除掉,為將來(lái)更好的發(fā)展打下良好的基礎(chǔ)。然而 3.x并不兼容2.x,因此許多擴(kuò)展庫(kù)需要進(jìn)行不小的改動(dòng)。Python社區(qū)目前的當(dāng)務(wù)之急是將眾多的擴(kuò)展庫(kù)遷移到3.x版本之上。在科學(xué) 計(jì)算領(lǐng)域,NumPy已經(jīng)移植成功。這為其它依賴(lài)于NumPy的擴(kuò)展庫(kù)鋪設(shè)了一條光明之路。
一直以來(lái),開(kāi)發(fā)者們對(duì)Python的執(zhí)行效率頗有微詞,因此Python科學(xué)計(jì)算方面的社區(qū)在未來(lái)或許會(huì)更致力于運(yùn)行效率方面。目前較為實(shí)際的解決方案是用編譯型語(yǔ)言編寫(xiě)核心計(jì)算函數(shù),然后對(duì)其進(jìn)行包裝,讓Python調(diào)用。而 Cython 則可以將Python程序轉(zhuǎn)換成C語(yǔ)言程序,并且可以通過(guò)一些特殊的編譯型語(yǔ)言的語(yǔ)法,將程序的運(yùn)行速度提升到C語(yǔ)言級(jí)別。此外另起爐灶的 PyPy 則通過(guò)JIT編譯,提高Python程序的運(yùn)行速度。根據(jù)目前的測(cè)試,平均能提速5倍,而對(duì)于純數(shù)值的運(yùn)算提升數(shù)十倍也是可能的,F(xiàn)在PyPy社區(qū)正致力于NumPy的移植工作,一旦移植成功,Python科學(xué)計(jì)算就又多了一種選擇。

ChinaUnix社區(qū):
      能夠談?wù)勀壳暗墓ぷ髅矗瑖?guó)內(nèi)外的科研院所的工作氛圍相比,有何區(qū)別?以及大家對(duì)開(kāi)源軟件的看法和對(duì)軟件版權(quán)的態(tài)度和意思。

HyryStudio:
      我的工作內(nèi)容比較繁雜,但是大多數(shù)都會(huì)使用到Python,我曾寫(xiě)過(guò)一篇博文專(zhuān)門(mén)介紹 Python如何幫助我高效完成工作 。
我不了解國(guó)內(nèi)的研究所的情況,而日本的研究所也就僅能就我所知做一些介紹。首先日本的許多專(zhuān)門(mén)從事軟件開(kāi)發(fā)的公司都比較保守,很多新開(kāi)發(fā)的系統(tǒng)仍然 會(huì)使用10多年前的開(kāi)發(fā)工具,例如VB 6.0、VC 6.0。一些大公司的商用項(xiàng)目還會(huì)使用.net 2.0或是Java 1.4這樣N年前的平臺(tái)。
      我所在的研究室并非專(zhuān)門(mén)從事軟件開(kāi)發(fā),專(zhuān)門(mén)寫(xiě)程序的只有我一個(gè)人。同事們通常會(huì)使用Excel做數(shù)據(jù)處理,一些較復(fù)雜的東西會(huì)用MATLAB做。但 是由于MATLAB十分昂貴,因此整個(gè)20多人的研究室只有2臺(tái)電腦安裝了MATLAB,作為MATLAB專(zhuān)用機(jī)器,在日本的公司里是絕對(duì)不能用未授權(quán)的 軟件的。
      如上所述,這種環(huán)境很不適合研究開(kāi)發(fā)工作。這樣他們也會(huì)自己尋找一些開(kāi)源軟件作為替代,例如 Scilab 。我所在的研究所的工作環(huán)境在日本來(lái)說(shuō)還是比較寬松的,能夠比較自由地選擇軟件。我在5年前左右開(kāi)始大量使用Python進(jìn)行開(kāi)發(fā),并且取得了很好的效 果。經(jīng)過(guò)這些年的積累,同事們也對(duì)Python的能力有所了解了。最近我們已經(jīng)開(kāi)始定期舉行Python學(xué)習(xí)會(huì),在研究室內(nèi)部推廣Python的使用。因 此一款開(kāi)源軟件要獲得大家的認(rèn)可需要較長(zhǎng)的周期和一些實(shí)際的成果。

ChinaUnix社區(qū):
      國(guó)內(nèi)相關(guān)的開(kāi)源相關(guān)的科學(xué)技術(shù)的圖書(shū)也不是很多,能夠談?wù)勗蛎矗?br />
HyryStudio:
     國(guó)內(nèi)科學(xué)計(jì)算軟件方面的書(shū)籍大都是介紹MATLAB的(其實(shí)日本也差不多)。這一方面和我國(guó)的軟件版權(quán)環(huán)境有關(guān),另一方面MATLAB這樣的商用軟 件更加會(huì)做市場(chǎng)推廣工作,例如為大學(xué)提供廉價(jià)的MATLAB,以及十分詳盡的文檔。而開(kāi)源軟件的開(kāi)發(fā)者多半將精力放在軟件開(kāi)發(fā)上,因此入門(mén)文檔、手冊(cè)以及 市場(chǎng)推廣方面都與商用軟件有較大的差距。這就需要我們這些開(kāi)源軟件的受益者多做宣傳和推廣工作。只要能做到文檔豐富、對(duì)初學(xué)者友好,我想開(kāi)源軟件會(huì)更加有 市場(chǎng)的。


作者: lkk_super    時(shí)間: 2012-05-29 14:43
在使用這些科學(xué)計(jì)算的模塊的時(shí)候,是否有對(duì)這些模塊進(jìn)行一些定制開(kāi)發(fā)等工作呢?如果有的話,有什么比較印象深刻的經(jīng)歷值得分享的呢?
作者: chenyx    時(shí)間: 2012-05-29 15:01
板凳支持
作者: to407    時(shí)間: 2012-05-29 15:20
地板 字?jǐn)?shù)不夠。
作者: king_819    時(shí)間: 2012-05-29 16:19
支持,希望以后多分享
作者: DiDeCrouse    時(shí)間: 2012-05-29 17:34
python語(yǔ)言很不錯(cuò),F(xiàn)在使用越來(lái)越廣了
作者: HyryStudio    時(shí)間: 2012-05-29 18:40
lkk_super 發(fā)表于 2012-05-29 14:43
在使用這些科學(xué)計(jì)算的模塊的時(shí)候,是否有對(duì)這些模塊進(jìn)行一些定制開(kāi)發(fā)等工作呢?如果有的話,有什么比較印象 ...


工作中以解決問(wèn)題為第一原則,因此如果某個(gè)庫(kù)中找不到合適的函數(shù),就會(huì)找找其它的庫(kù),基本上不需要做什么定制工作。只是偶爾找不到合適的數(shù)組處理函數(shù)時(shí),會(huì)用Cython編寫(xiě),其結(jié)果和直接用C語(yǔ)言寫(xiě)效率差不多,很方便。

然后就是做界面時(shí),有時(shí)候會(huì)將matplotlib的圖表以及Mayavi的三維場(chǎng)景嵌入到PyQt的界面、或者TraitsUI制作的界面中。一般做界面程序的時(shí)候我都會(huì)嵌入一個(gè)Python命令行,這樣有時(shí)候出現(xiàn)問(wèn)題時(shí),可以通過(guò)這個(gè)命令行查看各個(gè)對(duì)象的屬性,以及調(diào)用它們的方法。
作者: ecjtubaowp    時(shí)間: 2012-05-29 21:52
聽(tīng)說(shuō)Fortran做科學(xué)計(jì)算很強(qiáng)大,沒(méi)接觸過(guò)。也很想學(xué)學(xué)python
作者: Gray1982    時(shí)間: 2012-05-29 22:49
to407 發(fā)表于 2012-05-29 15:20
地板 字?jǐn)?shù)不夠。



哈哈哈哈
學(xué)Python也有幾年了,相當(dāng)實(shí)用
作者: lemoncandy    時(shí)間: 2012-05-30 09:07
HyryStudio 發(fā)表于 2012-05-29 18:40
工作中以解決問(wèn)題為第一原則,因此如果某個(gè)庫(kù)中找不到合適的函數(shù),就會(huì)找找其它的庫(kù),基本上不需要做什 ...


以前一直以為python就是和perl、php差不多的東西

原來(lái)還干了很多matlable能夠干的事情啊
作者: 追憶的風(fēng)箏    時(shí)間: 2012-05-30 09:21
記得在大學(xué)做科學(xué)計(jì)算,數(shù)據(jù)或信號(hào)處理,用的是MATLAB,早知道Python科學(xué)計(jì)算這么強(qiáng)大,當(dāng)初就該建議老師使用Python

有個(gè)問(wèn)題想請(qǐng)教下:
Python的運(yùn)行效率,一直讓我比較頭疼,利用一些擴(kuò)展庫(kù)能夠解決數(shù)據(jù)計(jì)算的速度上,但是有些時(shí)候速度慢不是因?yàn)閿?shù)據(jù)計(jì)算,有沒(méi)有好的優(yōu)化方法,或談下經(jīng)驗(yàn)?
作者: lkk_super    時(shí)間: 2012-05-30 09:58
回復(fù) 7# HyryStudio


    一般做界面程序的時(shí)候我都會(huì)嵌入一個(gè)Python命令行  
   這個(gè)方法不錯(cuò) 學(xué)習(xí)了 謝謝分享~~~
作者: Moon_Bird    時(shí)間: 2012-05-30 14:06
很邪惡的歪一下樓:
論快感,C++/C是看黃書(shū),Python是擼管,Ruby就是拉著個(gè)妹子肆意蹂躪 {:3_189:} {:3_189:}
作者: 追憶的風(fēng)箏    時(shí)間: 2012-05-30 14:21
如何用C擴(kuò)展Python?
作者: 木頭小飛    時(shí)間: 2012-05-30 14:26
我前天剛開(kāi)始看python
作者: Hongqiyaodao    時(shí)間: 2012-05-30 14:29
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: HyryStudio    時(shí)間: 2012-05-30 18:48
追憶的風(fēng)箏 發(fā)表于 2012-05-30 09:21
記得在大學(xué)做科學(xué)計(jì)算,數(shù)據(jù)或信號(hào)處理,用的是MATLAB,早知道Python科學(xué)計(jì)算這么強(qiáng)大,當(dāng)初就該建議老師使 ...


你能具體說(shuō)說(shuō)是些什么情況嗎?

因?yàn)槲抑饕帉?xiě)計(jì)算、數(shù)據(jù)處理方面的程序。我一般程序優(yōu)化分為如下幾個(gè)步驟:

1. 找合適的擴(kuò)展庫(kù)。
2. 找不到擴(kuò)展庫(kù)時(shí),先用Python實(shí)現(xiàn)。
3. 如果Python實(shí)現(xiàn)速度不夠用,那么就用Cython。
4. Cython還不夠用時(shí)就找有沒(méi)有C語(yǔ)言的庫(kù),然后嘗試用Cython或者SWIG等進(jìn)行包裝。
5. 如果還不夠用就考慮多進(jìn)程,若能將計(jì)算分為多進(jìn)程那是最好,至少可以將計(jì)算和GUI進(jìn)程分開(kāi)。

對(duì)于我遇到的絕大多數(shù)情況,通常到Cython這一步就夠用了。
作者: pitonas    時(shí)間: 2012-05-30 19:30
這個(gè)語(yǔ)言本身將來(lái)會(huì)有哪些進(jìn)步呢?
作者: crazyhadoop    時(shí)間: 2012-05-30 22:13
那本書(shū)寫(xiě)的真心贊,是做研究的好幫手!有了Python,工具無(wú)憂啊
作者: Shell_HAT    時(shí)間: 2012-05-31 00:25
目前還停留在把Python當(dāng)腳本用的初級(jí)階段,向?qū)<覍W(xué)習(xí)了。
作者: 小把戲    時(shí)間: 2012-05-31 01:13
最后一句說(shuō)的太好了。 其實(shí)應(yīng)該把文旦等這些都認(rèn)真的做,相信發(fā)展的會(huì)更好。
作者: 追憶的風(fēng)箏    時(shí)間: 2012-05-31 08:48
回復(fù) 17# HyryStudio

我曾經(jīng)工作共有個(gè)需求,是將一個(gè)服務(wù)器接收的數(shù)據(jù)包轉(zhuǎn)發(fā)到另外一臺(tái)服務(wù)器,1秒鐘有幾個(gè)百個(gè)并發(fā)請(qǐng)求,就會(huì)發(fā)現(xiàn)Python有很大的瓶頸,速度好慢,我已經(jīng)使用了multiprocess、stackless等方式,包括用堆棧,進(jìn)行異步處理,把數(shù)據(jù)都放到了內(nèi)存中(用的字典),但還是因?yàn)樾阅軉?wèn)題放棄了這種方式。

除此之外,能多談?wù)凜ython的實(shí)現(xiàn)嗎?
   
作者: crazyhadoop    時(shí)間: 2012-05-31 13:04
回復(fù) 11# 追憶的風(fēng)箏


    python 的優(yōu)勢(shì)在于輕便和靈活,速度確實(shí)不如matlab,這一點(diǎn)上python還是稍遜一籌的。 優(yōu)化竟可能還是提高程序本身的實(shí)現(xiàn)技巧吧。能不重復(fù)計(jì)算的就不要重復(fù)計(jì)算,能多機(jī)并行的,就不要在一個(gè)機(jī)器上死磕
作者: 追憶的風(fēng)箏    時(shí)間: 2012-05-31 13:52
回復(fù) 23# crazyhadoop

并行計(jì)算是一個(gè)思路,將數(shù)據(jù)流分布到不同的服務(wù)器上,將結(jié)果進(jìn)行匯總。但數(shù)據(jù)處理方式很多,但有些時(shí)候瓶頸不在這。Python實(shí)現(xiàn)分布式計(jì)算,可以分享下經(jīng)驗(yàn)嗎?
   
作者: crazyhadoop    時(shí)間: 2012-05-31 14:10
回復(fù) 24# 追憶的風(fēng)箏


    如果有大量的運(yùn)算數(shù)據(jù)要做,我會(huì)把這些數(shù)據(jù)按照使用的順序劃分一下,比如在文本分類(lèi)計(jì)算的時(shí)候,首先處理原始數(shù)據(jù),每200M分出一個(gè)文件,然后訓(xùn)練程序就開(kāi)始去讀取這些文件。慢慢的就會(huì)有 10個(gè)左右的進(jìn)程在同時(shí)處理這些文件。然后再匯總結(jié)果,基本就是這樣吧。那么多核不要浪費(fèi)。


作者: 追憶的風(fēng)箏    時(shí)間: 2012-05-31 16:55
在工作中有些情況是,在并發(fā)請(qǐng)求大的時(shí)候,就算用Python把請(qǐng)求的數(shù)據(jù)往內(nèi)存里放,都放不進(jìn)去。先不說(shuō)數(shù)據(jù)處理用多長(zhǎng)時(shí)間,至少不能丟數(shù)據(jù)啊,實(shí)在是郁悶。
作者: HyryStudio    時(shí)間: 2012-05-31 18:39
追憶的風(fēng)箏 發(fā)表于 2012-05-31 08:48
回復(fù) 17# HyryStudio

我曾經(jīng)工作共有個(gè)需求,是將一個(gè)服務(wù)器接收的數(shù)據(jù)包轉(zhuǎn)發(fā)到另外一臺(tái)服務(wù)器,1秒鐘有 ...


網(wǎng)絡(luò)并發(fā)的話,瓶頸應(yīng)該不在CPU處理之上,而是在網(wǎng)絡(luò)處理吧。我對(duì)這個(gè)不熟悉,不過(guò)就我多年在Python社區(qū)潛水的經(jīng)驗(yàn),似乎gevent之類(lèi)的異步處理庫(kù)應(yīng)該能實(shí)現(xiàn)高并發(fā)吧。如果瓶頸在CPU對(duì)數(shù)據(jù)包的處理的話,那就可以用Cython之類(lèi)的加速了。

Cython將Python程序翻譯成調(diào)用Python API的C語(yǔ)言程序,然后進(jìn)行編譯。如果是針對(duì)純Python程序的話,翻譯成C語(yǔ)言可以節(jié)省Python虛擬機(jī)中的那個(gè)解釋用的大循環(huán),運(yùn)行速度能夠提高30%左右。

如果使用Cython的靜態(tài)語(yǔ)言關(guān)鍵字對(duì)程序中一些變量進(jìn)行類(lèi)型定義的話,Cython就可以將程序翻譯成更加優(yōu)化的C語(yǔ)言程序,從而大幅度提高運(yùn)行速度。例如下面的程序:

a = []
a.append(1)

如果Cython不知道a是列表,它就會(huì)調(diào)用Python API首先向?qū)ο骯請(qǐng)求append方法對(duì)象,然后再通過(guò)Python的函數(shù)調(diào)用運(yùn)行append方法。

但是如果:

list a = []
a.append(1)

那么Cython知道a是一個(gè)列表,于是它直接調(diào)用Python API中往列表中添加對(duì)象的函數(shù),可以節(jié)省不少運(yùn)行時(shí)間。
作者: HyryStudio    時(shí)間: 2012-05-31 18:41
本帖最后由 HyryStudio 于 2012-05-31 18:43 編輯

回復(fù) 23# crazyhadoop


其實(shí)MATLAB也只是針對(duì)一些矢量運(yùn)算調(diào)用底層Fortran庫(kù)時(shí)速度很快,這部分和Python調(diào)用的庫(kù)是差不多的,所以MATLAB在這方面和NumPy,SciPy是一個(gè)級(jí)別的。

至于程序內(nèi)部的循環(huán)判斷等語(yǔ)句的執(zhí)行速度,據(jù)說(shuō)最近的MATLAB有JIT,可以大幅度提高程序的運(yùn)算速度,不過(guò)我很久沒(méi)有用過(guò)MATLAB了,不太清楚。

最近有一個(gè)新的語(yǔ)言Juila,它提供了一個(gè)簡(jiǎn)單的運(yùn)算速度比較:

http://julialang.org/

從那個(gè)比較的表格可以看出:
  1. def fib(n):
  2.    if n<2:
  3.        return n
  4.    return fib(n-1)+fib(n-2)

  5. 運(yùn)行速度比較
  6. Python 31.47
  7. matlab 1336.37
  8. Javascript(V8) 1.55
復(fù)制代碼
fib這樣的遞歸調(diào)用函數(shù)Python比MATLAB快40倍,很有可能MATLAB不能對(duì)大量的函數(shù)調(diào)用進(jìn)行JIT優(yōu)化,因此非JIT優(yōu)化的MATLAB代碼可能比Python慢。而Javascript的V8引擎能進(jìn)行JIT,因此又比Python快20倍。
  1. def pisum():
  2.    sum = 0.0
  3.    for j in xrange(1, 500):
  4.        sum = 0.0
  5.        for k in xrange(1, 10000):
  6.            sum += 1.0/(k*k)
  7.    return sum

  8. 運(yùn)行速度比較
  9. Python  18.03
  10. matlab  1.08
  11. Javascript(V8) 0.75
復(fù)制代碼
對(duì)于pi_sum這樣的簡(jiǎn)單的循環(huán)判斷程序,MATLAB可能做了JIT,因此比Python快18倍,而MATLAB的JIT略遜于Javascript(V。

但是我用Cython將pisum重新寫(xiě)了一下:
  1. def pisum2():
  2.    cdef double sum
  3.    cdef int j, k
  4.    sum = 0.0
  5.    for j in range(1, 500):
  6.        sum = 0.0
  7.        for k in range(1, 10000):
  8.            sum += 1.0/(k*k)
  9.    return sum
復(fù)制代碼
它的運(yùn)算速度提高了30倍。
作者: HyryStudio    時(shí)間: 2012-05-31 18:56
回復(fù) 18# pitonas

我個(gè)人覺(jué)得將來(lái)的發(fā)展也不太好預(yù)測(cè),不過(guò)我個(gè)人覺(jué)得

1. 首先是將眾多的擴(kuò)展庫(kù)移植到Python3

2. 提速,Guido在下面的視頻中提到,如果有將來(lái)辦法讓Python做一些靜態(tài)的分析,例如添加一些靜態(tài)的聲明,也許可以提高程序的運(yùn)行速度。

http://pyvideo.org/video/956/keynote-guido-van-rossum
作者: 追憶的風(fēng)箏    時(shí)間: 2012-06-01 08:26
回復(fù) 27# HyryStudio

感謝回答!
   
作者: 追憶的風(fēng)箏    時(shí)間: 2012-06-01 08:49
我對(duì)于python用matplotlib不是很了解,想請(qǐng)教下,我有一些數(shù)據(jù),如下:
  1. 2012-04-01_02        68
  2. 2012-04-01_05        70
  3. 2012-04-01_08        69
  4. 2012-04-01_11        71
  5. 2012-04-01_14        72
  6. 2012-04-01_20        70
  7. 2012-04-02_02        71
  8. 2012-04-02_05        70
  9. 2012-04-02_08        69
  10. 2012-04-02_11        71
  11. 2012-04-02_14        69
  12. 2012-04-02_20        71
  13. 2012-04-03_02        74
  14. 2012-04-03_05        73
  15. 2012-04-03_08        77
  16. 2012-04-03_11        70
  17. 2012-04-03_14        71
  18. 2012-04-03_20        70
  19. 2012-04-04_02        70
  20. 2012-04-04_05        72
  21. 2012-04-04_08        72
  22. 2012-04-04_11        69
  23. 2012-04-04_14        71
  24. 2012-04-04_20        69
  25. 2012-04-05_02        75
復(fù)制代碼
根據(jù)時(shí)間和數(shù)值,想畫(huà)個(gè)圖,以前都是用Excel實(shí)現(xiàn),Python用Pychart也可以實(shí)現(xiàn),既然是科學(xué)計(jì)算matplotlib應(yīng)該也有實(shí)現(xiàn)的方式吧?

作者: txdgtwpv    時(shí)間: 2012-06-01 09:45
python是用來(lái)解決問(wèn)題的語(yǔ)言
作者: HyryStudio    時(shí)間: 2012-06-01 18:53
回復(fù) 31# 追憶的風(fēng)箏

我寫(xiě)了一個(gè)例子,放到我的網(wǎng)站上了。由于你的數(shù)據(jù)中時(shí)間不是等間隔的,因此用EXCEL繪制的那個(gè)圖是不準(zhǔn)確的。

http://hyry.dip.jp/tech/code/code.html/10




作者: isaacxu    時(shí)間: 2012-06-01 19:50
本帖最后由 isaacxu 于 2012-06-02 00:21 編輯

科學(xué)計(jì)算還是建議使用Fortran,60年的發(fā)展排除了許多缺陷,編譯器經(jīng)過(guò)不斷的優(yōu)化比較可靠。


作者: 追憶的風(fēng)箏    時(shí)間: 2012-06-02 10:42
回復(fù) 34# HyryStudio

感謝回答,我現(xiàn)在工作中的各種需求都基本上用Python解決,以后多多研究科學(xué)計(jì)算方面的技術(shù)。
   
作者: sunny7476    時(shí)間: 2012-06-02 10:48
感覺(jué)人們對(duì)Python做科學(xué)計(jì)算還有一點(diǎn)點(diǎn)懷疑,畢竟Matlab影響太大了。而且與文章中“保守”的思想也有點(diǎn)關(guān)系。同時(shí),如果Python基金會(huì)能支持一個(gè)“官方”的科學(xué)計(jì)算組件包就好了。同時(shí)Python(x, y)也很不錯(cuò)了。還是那句話,支持PyPy。
作者: wangzwang_cu    時(shí)間: 2012-06-03 17:47
請(qǐng)教各位,Python在桌面應(yīng)用和UI方面有什么特長(zhǎng)呢,有沒(méi)有比較印象深刻的經(jīng)歷值得分享的呢?
作者: HyryStudio    時(shí)間: 2012-06-04 19:19
回復(fù) 38# wangzwang_cu

簡(jiǎn)單的界面我用TraitsUI,復(fù)雜的界面就用PyQt或者PySide,嵌入Mayavi, matplotlib或者QwtGUI都很方便。印象比較深刻的一次是用gevent的協(xié)程在GUI單線程中實(shí)現(xiàn)比較復(fù)雜的邏輯。
   
作者: 追憶的風(fēng)箏    時(shí)間: 2012-06-05 09:40
如果不使用pythonxy集成的python軟件包,安裝SciPy和Pylab之類(lèi)的還挺費(fèi)勁!
作者: hztj2005    時(shí)間: 2019-06-21 15:50
因?yàn)閷?duì)《Python科學(xué)計(jì)算》感興趣,搜到這個(gè)網(wǎng)頁(yè)。贊一個(gè)!




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2