<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
不進行計算時,生成器和list空間佔用
import time from memory_profiler import profile @profile(precision=4) def list_fun(): start = time.time() total = ([i for i in range(5000000)]) print('iter_spend_time:',time.time()-start) @profile(precision=4) def gent_func(): gent_start = time.time() total = (i for i in range(5000000)) print('gent_spend_time:',time.time()-gent_start) iter_fun() gent_func()
顯示結果的含義:第一列表示已分析程式碼的行號,第二列(Mem 使用情況)表示執行該行後 Python 直譯器的記憶體使用情況。第三列(增量)表示當前行相對於最後一行的記憶體差異。最後一列(行內容)列印已分析的程式碼。
分析:在不進行計算的情況下,列表list和迭代器會佔用空間,但對於生成器不會佔用空間
當需要計算時,list和生成器的花費時間和佔用記憶體
使用sum內建函數,list和生成器求和10000000個資料,list記憶體佔用較大,生成器花費時間大概是list的兩倍
import time from memory_profiler import profile @profile(precision=4) def iter_fun(): start = time.time() total = sum([i for i in range(10000000)]) print('iter_spend_time:',time.time()-start) @profile(precision=4) def gent_func(): gent_start = time.time() total = sum(i for i in range(10000000)) print('gent_spend_time:',time.time()-gent_start) iter_fun() gent_func()
比較分析,如果需要對資料進行迭代使用時,生成器方法的耗時較長,但記憶體使用方面還是較少,因為使用生成器時,記憶體只儲存每次迭代計算的資料。分析原因時個人認為,生成器的迭代計算過程中,在迭代資料和計算直接不斷轉換,相比與迭代器物件中先將資料全部儲存在記憶體中(雖然佔記憶體,但讀取比再次迭代要快),因此,生成器比較費時間,但佔用記憶體小。
記錄資料迴圈求和500000個資料,迭代器和生成器迴圈得到時
總結:幾乎同時完成,迭代器的佔用記憶體較大
import time from memory_profiler import profile itery = iter([i for i in range(5000000)]) gent = (i for i in range(5000000)) @profile(precision=4) def iter_fun(): start = time.time() total= 0 for item in itery: total+=item print('iter:',time.time()-start) @profile(precision=4) def gent_func(): gent_start = time.time() total = 0 for item in gent: total+=item print('gent:',time.time()-gent_start) iter_fun() gent_func()
list,迭代器和生成器共同使用sum計算5000000個資料時間比較
總結:list+sum和迭代器+sum計算時長差不多,但生成器+sum計算的時長幾乎長一倍,
import time from memory_profiler import profile @profile(precision=4) def list_fun(): start = time.time() print('start!!!') list_data = [i for i in range(5000000)] total = sum(list_data) print('iter_spend_time:',time.time()-start) @profile(precision=4) def iter_fun(): start = time.time() total = 0 total = sum(iter([i for i in range(5000000)])) print('total:',total) print('iter_spend_time:',time.time()-start) @profile(precision=4) def gent_func(): gent_start = time.time() total = sum(i for i in range(5000000)) print('total:',total) print('gent_spend_time:',time.time()-gent_start) list_fun() iter_fun() gent_func()
到此這篇關於python memory_profiler庫生成器和迭代器記憶體佔用的時間分析的文章就介紹到這了,更多相關python的memory_profiler 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45