python運行非常慢的解決 為什么Python效率這么低,還這么火?
為什么Python效率這么低,還這么火?在許多情況下,性能不是瓶頸。大約80%的應用程序不需要高性能。Python到底有多慢?首先,我們用10個坐標點來模擬城市的位置。由于我們平時對Python的使用
為什么Python效率這么低,還這么火?
在許多情況下,性能不是瓶頸。大約80%的應用程序不需要高性能。
Python到底有多慢?
首先,我們用10個坐標點來模擬城市的位置。由于我們平時對Python的使用比較多,也比較熟悉,所以我們首先選擇Python作為編程語言來實現(xiàn)蟻群算法,但是我們在第一時間就等著睡著了。猜猜看有多長時間,超過六分鐘,這是效率的可怕之處。你不能讓老師等6分鐘在最后的回答中選擇最佳路徑。恐怕要暫停了。用C語言對蟻群算法進行了優(yōu)化,優(yōu)化結(jié)果不到1min。沒有比較就沒有壞處。在這之后,我深刻地認識到Python執(zhí)行效率的可怕方面。
有些人可能想知道為什么C和Java比python更高效。事實上,它與語言的底層代碼有關(guān)。C語言是匯編語言的二次開發(fā),Java大多是C和C的二次開發(fā),但是我們的Python可以分為兩種情況,一種是Cpython,另一種是jpython,分別是C和Java的二次開發(fā),所以效率比這兩種語言要低。我看到消息說,為了解決python的效率問題,政府計劃重新開發(fā)底層python代碼。最近,我沒有看到任何相關(guān)的新聞。畢竟,這個工作量是非常巨大的。
學Python的電腦要什么樣的配置?
感謝您的邀請
!作為IT行業(yè)從業(yè)者和計算機專業(yè)教育者,讓我回答這個問題。
首先,如果您從學習Python語言本身的角度出發(fā),您不需要配置太高的計算機。普通辦公電腦完全可以滿足要求,或者大部分在售筆記本電腦都可以滿足基本的學習要求。
但是,學習Python通常必須有明確的學習方向。不同的學習方向在計算機配置上仍有一些具體的要求。目前Python的主要學習方向包括web開發(fā)、大數(shù)據(jù)開發(fā)、人工智能開發(fā)和嵌入式開發(fā),其中大數(shù)據(jù)開發(fā)和人工智能開發(fā)對計算機配置仍有一定的要求。
大數(shù)據(jù)領(lǐng)域的發(fā)展通常對計算機內(nèi)存有更高的要求。一個重要原因是,大數(shù)據(jù)平臺通常對內(nèi)存有更高的要求。很多大數(shù)據(jù)平臺至少需要8g內(nèi)存,而一些商業(yè)大數(shù)據(jù)平臺對內(nèi)存的要求更高。因此,如果你想學習Python,從事大數(shù)據(jù)開發(fā),就需要配置一個內(nèi)存,計算機越大越好。另外,對于初學者來說,通常需要通過虛擬機在自己的計算機上構(gòu)建偽分布式集群,這對內(nèi)存容量提出了更高的要求。
人工智能的發(fā)展通常需要一個強大的GPU,所以如果你想學習Python進行機器學習(深度學習)、計算機視覺等方面的開發(fā),就必須配備一個更好的顯示卡,這樣會大大提高實驗速度。另外,人工智能的發(fā)展方向?qū)PU和內(nèi)存也有一定的要求。
最后,在硬盤的配置上,最好選擇速度更快的固態(tài)盤,而且容量不需要太大。
Python語言其實很慢,為什么機器學習這種快速算法步驟通常還是用呢?
對于那些使用了多種開發(fā)語言(Java、C#、nodejs、Erlang)然后轉(zhuǎn)用Python進行機器學習的人,我想談談我的看法。
首先,Python真的很慢嗎?我的回答是真的。非常慢。for循環(huán)比CPP慢兩個數(shù)量級。
那么為什么要使用Python呢?如果我們遍歷超過一億個數(shù)據(jù),兩個數(shù)量級的差異是不可接受的。但是,如果我們使用Python來執(zhí)行頂層邏輯并阻塞數(shù)以億計的數(shù)據(jù),Python只會循環(huán)十幾次,剩下的就留給CPU和GPU了。所以兩個數(shù)量級無關(guān)緊要?一毫秒和100毫秒在整個系統(tǒng)中并不重要。
Python最大的優(yōu)點是它可以非常優(yōu)雅地將數(shù)據(jù)拋出到高效的C、CUDA中進行計算。Numpy、panda、numba這些優(yōu)秀的開源庫可以非常方便高效地處理海量數(shù)據(jù),借助ZMQ、cell等還可以做分布式計算,gevent借助epoll系統(tǒng)IO優(yōu)化。因此,它不需要花費太多的精力就可以優(yōu)雅高效地完成海量數(shù)據(jù)處理和機器學習任務。這就是Python如此流行的原因。
好好想想。同樣的性能,代碼只有CPP或Java的三分之一或更少,不是很吸引人嗎?