最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python?memory_profiler庫生成器和迭代器內(nèi)存占用的時間分析

 更新時間:2022年06月28日 14:41:48   作者:MAR-Sky  
這篇文章主要介紹了python?memory_profiler庫生成器和迭代器內(nèi)存占用的時間分析,文章圍繞主題展開詳細的內(nèi)容介紹,感興趣的小伙伴可以參考一下

不進行計算時,生成器和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 使用情況)表示執(zhí)行該行后 Python 解釋器的內(nèi)存使用情況。第三列(增量)表示當前行相對于最后一行的內(nèi)存差異。最后一列(行內(nèi)容)打印已分析的代碼。
分析:在不進行計算的情況下,列表list和迭代器會占用空間,但對于
生成器不會占用空間

當需要計算時,list和生成器的花費時間和占用內(nèi)存

使用sum內(nèi)置函數(shù),list和生成器求和10000000個數(shù)據(jù),list內(nèi)存占用較大,生成器花費時間大概是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()

比較分析,如果需要對數(shù)據(jù)進行迭代使用時,生成器方法的耗時較長,但內(nèi)存使用方面還是較少,因為使用生成器時,內(nèi)存只存儲每次迭代計算的數(shù)據(jù)。分析原因時個人認為,生成器的迭代計算過程中,在迭代數(shù)據(jù)和計算直接不斷轉換,相比與迭代器對象中先將數(shù)據(jù)全部保存在內(nèi)存中(雖然占內(nèi)存,但讀取比再次迭代要快),因此,生成器比較費時間,但占用內(nèi)存小。

記錄數(shù)據(jù)循環(huán)求和500000個數(shù)據(jù),迭代器和生成器循環(huán)得到時

總結:幾乎同時完成,迭代器的占用內(nèi)存較大

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個數(shù)據(jù)時間比較

總結: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庫生成器和迭代器內(nèi)存占用的時間分析的文章就介紹到這了,更多相關python的memory_profiler 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python數(shù)據(jù)類型之Set集合實例詳解

    Python數(shù)據(jù)類型之Set集合實例詳解

    這篇文章主要介紹了Python數(shù)據(jù)類型之Set集合,結合實例形式詳細分析了Python數(shù)據(jù)類型中集合的概念、原理、創(chuàng)建、遍歷、交集、并集等相關操作技巧,需要的朋友可以參考下
    2019-05-05
  • Python中的is和==比較兩個對象的兩種方法

    Python中的is和==比較兩個對象的兩種方法

    這篇文章主要介紹了Python中的is和==比較兩個對象的兩種方法的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • 詳解PyQt5 GUI 接收UDP數(shù)據(jù)并動態(tài)繪圖的過程(多線程間信號傳遞)

    詳解PyQt5 GUI 接收UDP數(shù)據(jù)并動態(tài)繪圖的過程(多線程間信號傳遞)

    這篇文章主要介紹了PyQt5 GUI 接收UDP數(shù)據(jù)并動態(tài)繪圖(多線程間信號傳遞),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • python中shape[0]與shape[1]的說明

    python中shape[0]與shape[1]的說明

    這篇文章主要介紹了python中shape[0]與shape[1]的說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Pandas加速代碼之避免使用for循環(huán)

    Pandas加速代碼之避免使用for循環(huán)

    如果你使用Python和Pandas進行數(shù)據(jù)分析,循環(huán)是不可避免要使用的。這篇文章主要給大家介紹了關于Pandas加速代碼之避免使用for循環(huán)的相關資料,需要的朋友可以參考下
    2021-05-05
  • Python實現(xiàn)倉庫管理系統(tǒng)

    Python實現(xiàn)倉庫管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Python實現(xiàn)倉庫管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python 實現(xiàn)毫秒級淘寶搶購腳本的示例代碼

    Python 實現(xiàn)毫秒級淘寶搶購腳本的示例代碼

    本篇文章主要介紹了Python 通過selenium實現(xiàn)毫秒級自動搶購的示例代碼,通過掃碼登錄即可自動完成一系列操作,搶購時間精確至毫秒,可搶加購物車等待時間結算的,感興趣的小伙伴們可以參考一下
    2019-09-09
  • python解釋模型庫Shap實現(xiàn)機器學習模型輸出可視化

    python解釋模型庫Shap實現(xiàn)機器學習模型輸出可視化

    Shap 是一個開源的 python 庫,用于解釋模型。它可以創(chuàng)建多種類型的可視化,有助于了解模型和解釋模型是如何工作的。在本文中,我們將會分享一些Shap創(chuàng)建的不同類型的機器學習模型可視化
    2021-11-11
  • PyQt5實現(xiàn)用戶登錄GUI界面及登錄后跳轉

    PyQt5實現(xiàn)用戶登錄GUI界面及登錄后跳轉

    PyQt5是強大的GUI工具之一,通過其可以實現(xiàn)優(yōu)秀的桌面應用程序。本文主要介紹了PyQt5實現(xiàn)用戶登錄GUI界面及登錄后跳轉,具有一定的參考價值,感興趣的可以了解一下
    2021-11-11
  • Python搭建Spark分布式集群環(huán)境

    Python搭建Spark分布式集群環(huán)境

    這篇文章主要介紹了Spark分布式集群環(huán)境搭建基于Python版,Apache Spark 是一個新興的大數(shù)據(jù)處理通用引擎,提供了分布式的內(nèi)存抽象。100 倍本文而是使用三臺電腦來搭建一個小型分布式集群環(huán)境安裝,需要的朋友可以參考下
    2019-07-07

最新評論

朝阳区| 宝清县| 麻江县| 灵川县| 新竹市| 安阳县| 崇文区| 富裕县| 辉县市| 梁平县| 大足县| 修文县| 祥云县| 德钦县| 开远市| 旬阳县| 房山区| 新营市| 柳江县| 平果县| 钟山县| 得荣县| 普定县| 华蓥市| 罗定市| 石门县| 新郑市| 烟台市| 石首市| 酒泉市| 根河市| 吉林市| 禄劝| 同德县| 西平县| 罗田县| 开封市| 泰来县| 静宁县| 云南省| 卓资县|