卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

python 加速循環(huán)的執(zhí)行 Python語言其實(shí)很慢,為什么機(jī)器學(xué)習(xí)這種快速算法步驟通常還是用呢?

Python語言其實(shí)很慢,為什么機(jī)器學(xué)習(xí)這種快速算法步驟通常還是用呢?對于那些使用了多種開發(fā)語言(Java、C#、nodejs、Erlang)然后轉(zhuǎn)到Python進(jìn)行機(jī)器學(xué)習(xí)的人,我想談?wù)勎业目捶?。?/p>

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ù)量級(jí)。

那么為什么要使用Python呢?如果我們遍歷超過一億個(gè)數(shù)據(jù),兩個(gè)數(shù)量級(jí)的差異是不可接受的。但是,如果我們使用Python來執(zhí)行頂層邏輯并阻塞數(shù)以億計(jì)的數(shù)據(jù),Python只會(huì)循環(huán)十幾次,剩下的就留給CPU和GPU了。所以兩個(gè)數(shù)量級(jí)無關(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的三分之一或更少,不是很吸引人嗎?

python如何提高for循環(huán)效率?

這個(gè)答案適用于蟒蛇3。Xpython本身,這確實(shí)是相對緩慢的。但相對而言,python的編寫方式比directfor循環(huán)更快。例如,循環(huán)的標(biāo)準(zhǔn)編寫如下:對于范圍(10000)中的I:I**2,速度較慢,而標(biāo)準(zhǔn)編寫的嵌套循環(huán)速度較慢。它可以重寫為一個(gè)列表推理:[I**2 for I in range(10000)],這比direct for loop的標(biāo)準(zhǔn)編寫方法快得多。此外,它還可以使用Python的高級(jí)函數(shù)映射來執(zhí)行自動(dòng)并行計(jì)算。它也可以寫成列表(map(lambda I:I**2,range(10000)))。map函數(shù)幾乎和list推理一樣快。

python循環(huán)內(nèi)要處理大量數(shù)據(jù)時(shí)怎么優(yōu)化?

先嘗試優(yōu)化程序的時(shí)間復(fù)雜度,找到更有效的算法

在確保算法復(fù)雜度在可接受范圍內(nèi)后,開始不斷優(yōu)化。下面是一些Python優(yōu)化的技巧:

實(shí)際測量表明for語句通常比while語句更有效

類似地,實(shí)際測量表明,xrange一般比range更有效

如果要存儲(chǔ)動(dòng)態(tài)數(shù)據(jù)(即有一個(gè)可執(zhí)行數(shù)據(jù)可以頻繁更改),請少用list和STR,多用dict

測量表明,兩個(gè)STR的連接效率是從高到低=,join,

多個(gè)str的連接效率由高到低=,

盡量使用list解析表達(dá)式和generator表達(dá)式而不是循環(huán)來構(gòu)建list

無論從代碼效率還是可移植性方面,都要避免使用global關(guān)鍵字