Dù sao tôi cũng có thể biết bao nhiêu byte được thực hiện bởi biến cụ thể trong Python. Ví dụ; Giả sử tôi có
int = 12
print [type[int]]
Nó sẽ in
Nhưng tôi muốn biết nó đã lấy bao nhiêu byte trên bộ nhớ? Có thể không?
S.Lott
378K79 Huy hiệu vàng503 Huy hiệu bạc773 Huy hiệu Đồng79 gold badges503 silver badges773 bronze badges
Đã hỏi ngày 24 tháng 11 năm 2009 lúc 11:41Nov 24, 2009 at 11:41
ITSaboutCodeItSaboutCodeitsaboutcode
24K44 Huy hiệu vàng109 Huy hiệu bạc156 Huy hiệu đồng44 gold badges109 silver badges156 bronze badges
Bạn có thể tìm thấy chức năng mà bạn đang tìm kiếm ở đây [trong sys.getsizeof
- Python 2.6 trở lên].
Ngoài ra: Đừng theo dõi int
tích hợp!
import sys
myint = 12
print[sys.getsizeof[myint]]
Augustin
2.36421 Huy hiệu bạc23 Huy hiệu đồng21 silver badges23 bronze badges
Đã trả lời ngày 24 tháng 11 năm 2009 lúc 11:47Nov 24, 2009 at 11:47
ChristophedchristophedChristopheD
109K27 Huy hiệu vàng160 Huy hiệu bạc177 Huy hiệu đồng27 gold badges160 silver badges177 bronze badges
7
Nếu bạn muốn biết kích thước của int, bạn có thể sử dụng struct
>>> import struct
>>> struct.calcsize["i"]
4
Mặt khác, như những người khác đã chỉ ra, sử dụng getSizeof [2.6]. Ngoài ra còn có một công thức bạn có thể thử.
Đã trả lời ngày 24 tháng 11 năm 2009 lúc 12:51Nov 24, 2009 at 12:51
ghostdog74ghostdog74ghostdog74
316K56 Huy hiệu vàng254 Huy hiệu bạc341 Huy hiệu Đồng56 gold badges254 silver badges341 bronze badges
Trong Python> = 2.6 Bạn có thể sử dụng sys.getsizeOf.
Đã trả lời ngày 24 tháng 11 năm 2009 lúc 11:48Nov 24, 2009 at 11:48
Alex Barrettalex BarrettAlex Barrett
15.7K3 Huy hiệu vàng 50 Huy hiệu bạc51 Huy hiệu Đồng3 gold badges50 silver badges51 bronze badges
Numpy cung cấp cơ sở hạ tầng để kiểm soát kích thước dữ liệu. Dưới đây là các ví dụ [PY3]:
import numpy as np
x = np.float32[0]
print[x.nbytes] # 4
a = np.zeros[[15, 15], np.int64]
print[a.nbytes] # 15 * 15 * 8 = 1800
Điều này rất hữu ích khi cố gắng gửi dữ liệu vào card đồ họa với PyopEngl, chẳng hạn.
Đã trả lời ngày 13 tháng 11 năm 2016 lúc 16:15Nov 13, 2016 at 16:15
1
Bạn cũng có thể xem pympler, đặc biệt là mô -đun ASIZEOF của nó, không giống như sys.getsizeof
hoạt động với Python> = 2.2.
Đã trả lời ngày 24 tháng 11 năm 2009 lúc 12:19Nov 24, 2009 at 12:19
Cat Plus Plus Plus PlusCat Plus Plus
122K26 Huy hiệu vàng196 Huy hiệu bạc222 Huy hiệu đồng26 gold badges196 silver badges222 bronze badges
Trong Python 3, bạn có thể sử dụng sys.getsizeOf [].
import sys
myint = 12
print[sys.getsizeof[myint]]
Đã trả lời ngày 23 tháng 10 năm 2017 lúc 21:27Oct 23, 2017 at 21:27
HisihisiHISI
4.3673 Huy hiệu vàng32 Huy hiệu bạc47 Huy hiệu đồng3 gold badges32 silver badges47 bronze badges
Thư viện tốt nhất cho điều đó là Guppy:
import guppy
import inspect
def get_object_size[obj]:
h = guppy.hpy[]
callers_local_vars = inspect.currentframe[].f_back.f_locals.items[]
vname = "Constant"
for var_name, var_val in callers_local_vars:
if var_val == obj:
vname = str[var_name]
size = str["{0:.2f} GB".format[float[h.iso[obj].domisize] / [1024 * 1024]]]
return str["{}: {}".format[vname, size]]
Đã trả lời ngày 15 tháng 10 năm 2018 lúc 8:46Oct 15, 2018 at 8:46
cemcemcem
1.41719 Huy hiệu bạc22 Huy hiệu đồng19 silver badges22 bronze badges
Câu trả lời được chấp nhận sys.getsizeof
là chính xác.
Nhưng nhìn vào nhận xét của bạn về câu trả lời được chấp nhận mà bạn có thể muốn số lượng bit mà một số đang chiếm trong nhị phân. Bạn có thể sử dụng
2[16].bit_length[] # '10000' in binary
>> 5
[4].bit_length[] # '100' in binary
>> 3
Đã trả lời ngày 7 tháng 12 năm 2021 lúc 20:51Dec 7, 2021 at 20:51