为了节省内存,我想为每个int使用更少的字节(4)而不是24。
我看过结构,但我不太了解如何使用它们。 https://docs.python.org/3/library/struct.html
当我执行以下操作时:
myInt = struct.pack('I', anInt)
sys.getsizeof(myInt)
不会像我预期的那样返回4。
我在做错什么吗? Python是否有另一种方法可以为每个变量节省内存?
已添加:我希望在给定索引的情况下可以使用750,000,000个整数。
答案 0 :(得分:3)
如果要在数组中保留许多整数,请使用numpy
ndarray。 Numpy是一个非常受欢迎的第三方程序包,与仅使用Python相比,它更紧凑地处理数组。 Numpy不在标准库中,因此它的更新频率可能比Python本身的更新频率更高-它被认为已添加到标准库中。 Numpy是Python在数据科学和其他科学用途中如此受欢迎的原因之一。
Numpy的np.int32类型将四个字节用作整数。用
声明充满零的数组import numpy as np
myarray = np.zeros((750000000,), dtype=np.int32)
或者,如果您只是想要数组而不希望花任何时间初始化值,
myarray = np.empty((750000000,), dtype=np.int32)
然后,您可以根据需要填充和使用数组。整个数组有一些Python开销,因此数组的大小将比4 * 750000000
稍大,但大小将接近。