獲取對象所佔內存

1、問題提出

  • 在對算法進行實現的過程中往往會遇到特徵矩陣的構建
  • 但矩陣的構建往往會導致內存佔用過大,甚至內存溢出

2、問題解決

  • 嘗試多種特徵矩陣構建的方式,計算每種方式所佔的內存
  • 實例驗證生成器對象與列表生成式對象所佔的內存:
# 創建生成器方法一:將列表生成式的[]換位()
L = [x**2 for x in range(5)]
G = (x**2 for x in range(5)) # 因爲生成器是可迭代對象,因此可以採用for循環對其進行迭代
# 創建生成器方法二:yield
def fib(times):
    a, b = 0, 1
    n = 0
    while n <= times:
        yield b # 注意yield將變量b的一系列值作爲生成器。
#         b = a + b
#         a = b
        b, a = a + b, b
        n += 1
    return "done"
for i in fib(5):
    print(i)

測試: 

import sys
print(sys.getsizeof(G))
print(sys.getsizeof(L))
import numpy as np
nparray = np.array(L)
print(nparray)
print(sys.getsizeof(nparray))

結果:

88
128
[ 0  1  4  9 16]
116

實驗結果表明生成器對象所佔的內存要比列表生成式要小許多。 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章