在某些场景下,可能不能正确取到内存的实际大小。(注意: 可能会有一些偏差)
使用两种方法取得内存大小值。
# -*- coding: UTF-8 -*-
def mem_computed(mem, size=32):
"""
* float内存近似值转int *
:param mem:
:param size:
:return int:
"""
result = mem / size
return int(round(result)) * size
def mem_computed2(mem):
"""
取内存近似值
:return int:
"""
mem_list = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 768, 1024, 2048, 4096, 6144]
mem = round(mem) # 四舍五入
mem_out = []
for index, num in enumerate(mem_list):
s = mem - num
mem_out.append(abs(s)) # 取到内存绝对值存储到数组
n = mem_out.index(min(mem_out)) # 取到数组中最的值的下标index
return mem_list[n] # 返回数组中最小的值,n为下标
if __name__ == '__main__':
memory = 1033.65693359375
print(f'使用浮点数取近似值: {mem_computed(memory)}')
print(f'使用接近数组中内存大小取值: {mem_computed2(memory)}')