如何使Python程序使用4个字节来表示int而不是24个字节?

如何使Python程序使用4个字节来表示int而不是24个字节?,python,memory,Python,Memory,为了节省内存,我希望对每个int使用更少的字节(4),而不是24个 我看了结构,但我真的不知道如何使用它们。 当我执行以下操作时: myInt=struct.pack('I',anInt) sys.getsizeof(myInt)没有像我预期的那样返回4 我做错什么了吗?Python是否有其他方法为每个变量节省内存 添加:我希望在给定索引的数组中能够使用75000000个整数。如果要在一个数组中保存多个整数,请使用numpyndarray。Numpy是一个非常流行的第三方软件包,它比Pytho

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

我看了结构,但我真的不知道如何使用它们。

当我执行以下操作时:

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

sys.getsizeof(myInt)
没有像我预期的那样返回4

我做错什么了吗?Python是否有其他方法为每个变量节省内存


添加:我希望在给定索引的数组中能够使用75000000个整数。

如果要在一个数组中保存多个整数,请使用
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
,但大小将接近。

为什么要这样做?我认为您正在尝试解决问题的解决方案问题。你能详细说明一下真正的问题吗?在现代计算机中,节省几个字节远比节省程序员的工作更有帮助。即使是大多数嵌入式计算机或像Raspberry Pi这样的小型计算机也是如此。只有当您希望对较大数据结构(如数组)中的许多整数执行此操作时,您所要求的才有帮助。你就是这样吗?您使用的是哪种数据结构?(具体的结构对你的问题很重要。)我希望在给定索引的情况下,可以使用一个数组中的75000000个整数。你想在内存中搜索这些75000000个整数吗?您可以从原始数据源中逐页阅读并搜索。您对标准库中包含的
阵列
模块有何看法?@noctiskytower:据我所知,
阵列
模块的唯一优点是它是标准库的一部分。它在几乎所有其他方面都不如
numpy
。如果只是出于兼容性的原因,我不会感到惊讶。正如我所写的,在标准库中包含
numpy
是经过认真考虑的,但由于升级原因被拒绝了。一个关键事实是,其他流行的第三方库,包括
matplotlib
pandas
,使用
numpy
而不是
array
。我想不出任何这样的库使用
数组