1
|
Frederico Schardong · 技术社区 · 6 年前 |
![]() |
1
6
这个
但是这个列表实际上只是一个指向int对象的指针数组,您创建了其中的10000000个,每个指针占用的内存通常为24字节。 前几个数字(通常多达255个)是由解释器预先创建和缓存的,因此它们实际上是免费的,但其余的则不是。所以,您需要添加如下内容:
然后结果会更有意义。
但请注意,如果您没有创建
Python 2.x文档过去有一个指向旧递归的链接
The 3.x docs
链接到
a newer one
,在Python2.7中可能工作,也可能不工作。(我一眼就注意到它使用了
如果你想知道为什么
CPython将每个内置类型表示为一个C结构,其中至少包含refcount的空间和指向该类型的指针。对象需要表示的任何实际值都是该值的附加值。 1个 因此,最小的非单例类型将为每个实例占用24字节。
如果您想知道如何避免每个整数使用24字节,那么答案是
NumPy's
其中一个允许您指定“本机类型”,如
使用
使用NumPy,你得到了 二者都 速度和空间,因为NumPy将允许您在一个紧密优化的C循环中对整个数组执行矢量化操作。
一。在Python中使用
2。除非你不这样做。阻止你的系统进入交换地狱可能会加速比拳击和解体更慢的事情。即使你没有避开那巨大的悬崖 仍然 避免涉及VM分页或缓存位置的小悬崖。 |