如何使我的Python程序将4个字节用于一个int而不是24个字节?

时间:2019-06-25 21:28:13

标签: python memory

为了节省内存,我想为每个int使用更少的字节(4)而不是24。

我看过结构,但我不太了解如何使用它们。 https://docs.python.org/3/library/struct.html

当我执行以下操作时:

myInt = struct.pack('I', anInt)

sys.getsizeof(myInt)不会像我预期的那样返回4。

我在做错什么吗? Python是否有另一种方法可以为每个变量节省内存?

已添加:我希望在给定索引的情况下可以使用750,000,000个整数。

1 个答案:

答案 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稍大,但大小将接近。