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

标签 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 个整数,我希望能够使用给定的索引。

最佳答案

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

关于python - 如何让我的 Python 程序使用 4 个字节而不是 24 个字节来表示 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56762238/

相关文章:

python - Django 相当于 MySQL 中的 SELECT * GROUP BY

python - Numpy 是否给出了意想不到的结果?

python - 在python中,如何将多个语句的条件语句变成像三元运算符一样的简写行?

C++ 在 .size() 之后丢失 vector 元素

ios - 从 segue 返回时 ViewController 不释放

c++ - 删除指向对象的 C++ 指针

python导入特定文件

python - 在访问装饰函数中的 for 循环变量时装饰函数

c# - 在 .NET 应用程序中预分配(保证)内存

c++ - 我可以增加 OpenCV 中 SVM 训练标签的数量吗?