Python遺傳算法實(shí)例 Python到底有多慢?
Python到底有多慢?首先,我們用10個(gè)坐標(biāo)點(diǎn)來模擬城市的位置。由于我們平時(shí)對Python的使用比較多,也比較熟悉,所以我們首先選擇Python作為編程語言來實(shí)現(xiàn)蟻群算法,但是我們在第一時(shí)間就等著睡
Python到底有多慢?
首先,我們用10個(gè)坐標(biāo)點(diǎn)來模擬城市的位置。由于我們平時(shí)對Python的使用比較多,也比較熟悉,所以我們首先選擇Python作為編程語言來實(shí)現(xiàn)蟻群算法,但是我們在第一時(shí)間就等著睡著了。猜猜看有多長時(shí)間,超過六分鐘,這是效率的可怕之處。你不能讓老師等6分鐘在最后的回答中選擇最佳路徑。恐怕要暫停了。用C語言對蟻群算法進(jìn)行了優(yōu)化,優(yōu)化結(jié)果不到1min。沒有比較就沒有壞處。在這之后,我深刻地認(rèn)識到Python執(zhí)行效率的可怕方面。
有些人可能想知道為什么C和Java比python更高效。事實(shí)上,它與語言的底層代碼有關(guān)。C語言是匯編語言的二次開發(fā),Java大多是C和C的二次開發(fā),但是我們的Python可以分為兩種情況,一種是Cpython,另一種是jpython,分別是C和Java的二次開發(fā),所以效率比這兩種語言要低。我看到消息說,為了解決python的效率問題,政府計(jì)劃重新開發(fā)底層python代碼。最近,我沒有看到任何相關(guān)的新聞。畢竟,這個(gè)工作量是非常巨大的。
Python語言其實(shí)很慢,為什么機(jī)器學(xué)習(xí)這種快速算法步驟通常還是用呢?
對于那些使用了多種開發(fā)語言(Java、C#、nodejs、Erlang)然后轉(zhuǎn)用Python進(jìn)行機(jī)器學(xué)習(xí)的人,我想談?wù)勎业目捶ā?/p>
首先,Python真的很慢嗎?我的回答是真的。非常慢。for循環(huán)比CPP慢兩個(gè)數(shù)量級。
那么為什么要使用Python呢?如果我們遍歷超過一億個(gè)數(shù)據(jù),兩個(gè)數(shù)量級的差異是不可接受的。但是,如果我們使用Python來執(zhí)行頂層邏輯并阻塞數(shù)以億計(jì)的數(shù)據(jù),Python只會循環(huán)十幾次,剩下的就留給CPU和GPU了。所以兩個(gè)數(shù)量級無關(guān)緊要?一毫秒和100毫秒在整個(gè)系統(tǒng)中并不重要。
Python最大的優(yōu)點(diǎn)是它可以非常優(yōu)雅地將數(shù)據(jù)拋出到高效的C、CUDA中進(jìn)行計(jì)算。Numpy、panda、numba這些優(yōu)秀的開源庫可以非常方便高效地處理海量數(shù)據(jù),借助ZMQ、cell等還可以做分布式計(jì)算,gevent借助epoll系統(tǒng)IO優(yōu)化。因此,它不需要花費(fèi)太多的精力就可以優(yōu)雅高效地完成海量數(shù)據(jù)處理和機(jī)器學(xué)習(xí)任務(wù)。這就是Python如此流行的原因。
好好想想。同樣的性能,代碼只有CPP或Java的三分之一或更少,不是很吸引人嗎?
初中文化可以學(xué)Python編程嗎,我想通過這個(gè)渠道進(jìn)入人工智能這個(gè)大行業(yè)?
沒關(guān)系,但你必須比別人更努力
1。Python是目前所有開發(fā)語言中比較好的入門語言。Python是一種動態(tài)語言,類似于腳本語言。開始很容易
2。初學(xué)者可以先看看Python基礎(chǔ)教程的書,看一些介紹性的視頻
3。學(xué)習(xí)應(yīng)該有目標(biāo),一周一個(gè)目標(biāo),一個(gè)月一個(gè)目標(biāo),按照循序漸進(jìn)的順序,估計(jì)學(xué)習(xí)Python語法只需要一個(gè)月。你應(yīng)該自己動手,把書上的代碼敲到一邊。在了解了基本語法之后,可以看看簡單而優(yōu)秀的開源代碼,flash,web2py等,并經(jīng)常看看Python官方文檔
5。試著做一些小項(xiàng)目,處理文件數(shù)據(jù),讀寫數(shù)據(jù)庫,寫一個(gè)簡單的爬蟲程序,邊練邊學(xué)
6、半年就可以寫一個(gè)簡單的Python程序了。如果你想再次升職,你需要做一個(gè)更大的項(xiàng)目,找一個(gè)與python相關(guān)的工作,邊工作邊學(xué)習(xí)
比如,當(dāng)你滿足計(jì)算文章中單詞出現(xiàn)率的需求時(shí),你需要知道該用什么方法,比如先用字符串方法對它進(jìn)行除法,然后保存到字典里統(tǒng)計(jì)數(shù)據(jù)。有了這樣一個(gè)總體思路,您就可以專門學(xué)習(xí)字符串方法和字典的使用。即使你以前沒有使用過這些方法,你也可以解決這個(gè)問題,即使你已經(jīng)完成了。
python自學(xué)難度有多大,怎樣算出師?
開始時(shí),您不必很好地學(xué)習(xí)算法。但是隨著技術(shù)的發(fā)展,仍然需要算法,否則只能做一些工作。
1. 學(xué)好軟件開發(fā)離不開計(jì)算機(jī)理論基礎(chǔ),比如數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、網(wǎng)絡(luò)技術(shù)、算法研究等,如果你喜歡這項(xiàng)技術(shù),那就不是問題。先開始,你可以彌補(bǔ)。
2. 算法是軟件開發(fā)的靈魂。好的算法寫不出好的程序。
3. 如何學(xué)習(xí)算法,首先選擇經(jīng)典算法教材?;镜目梢詮臄?shù)據(jù)結(jié)構(gòu)中學(xué)習(xí),其中包含一些基本的算法,然后再學(xué)習(xí)特殊的算法(實(shí)際上,在數(shù)據(jù)結(jié)構(gòu)領(lǐng)域?qū)W習(xí)算法一般就足夠了)。網(wǎng)上還有很多論壇、算法網(wǎng)站,為了吸引眼球,它們一般都很通俗易懂。大多數(shù)算法都是C語言,但是語言在算法層次上是相互聯(lián)系的,因此理解算法模型是最重要的。
4. 萬事開頭難。只要你開始,剩下的就是慢慢操作這項(xiàng)技術(shù)。該算法在實(shí)際應(yīng)用中是最快、最強(qiáng)的。
我希望我能幫助你