看板 Python 關於我們 聯絡資訊
我有個整數變數, 我想知道他在記憶體裡面佔了多少空間 ex: x=1 我想知道x這個變數到底在記憶體佔了多少空間, 我目前是用: x=1 len(repr(x)) 但是我有兩個問題: 1. x轉成repr(x)這個字串的過程會不會在記憶體裡面有資料量增加或是減少 2. len(repr(x))的答案是1, 這個1的單位是什麼? 是1 Bytes嗎? 我最後是想要知道y=2**1000的記憶體佔用大小, 照上述用法的話, 就是: y=2**1000 len(repr(y)) 而答案會是303, 這是否代表y這個變數佔用了303 Bytes的記憶體空間呢? 另外, 正常在C/C++裡面, int資料型態就是把其2進位編碼寫進去記憶體內, 所以譬如某個整數變數要乘2的話可以用"向左shift 1個bit"來達到, 這裡也是同樣概念嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 71.167.153.152
mars90226:len只是回傳長度吧,repr是回傳物件的字串表達 01/17 11:24
mars90226:所以你看到的1是'1'的長度,303是2**1000轉成字串的長度 01/17 11:25
mars90226:這跟他所占用的記憶體沒有關聯 01/17 11:25
swpoker:像python這種的~是不會讓你也沒有必要讓你知道這種細節的 01/17 11:29
klain:因為我必須要計算我的程式花了多少記憶體空間, 01/17 11:38
klain:所以如果我硬是要知道呢? 是否有什麼物件或是函式可以呼叫? 01/17 11:38
SansWord:跟你用的機器也有關係吧。 01/17 12:03
yuxio:用 shift 做乘2或除2的概念是一樣的 01/17 12:32
FreedomMax:我覺得最好開工作管理員看,他的GC你也不知道做了沒 01/17 12:34
mikapauli:(1).__sizeof__() 這樣? 01/17 13:57
uranusjr:這樣做也不會讓你知道你了多少記憶體啊, 還要把直譯器的 01/17 23:52
uranusjr:空間算進去, 可是除非你自己刻一個不然你要怎麼算直譯器 01/17 23:52
uranusjr:有哪些有多少記憶體是用在你的 script 上面!? 01/17 23:53
uranusjr:如果你是想知道效能, 直接找現成的 profiler 比較有意義 01/17 23:54