- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 pickle 的锉刀。其大小为 9.3MB。
-rw-r--r-- 1 ankit ankit 9.3M Jan 7 17:43 agg_397127.pkl
我使用 cPickle 将其加载到 python 中。我尝试使用 pympler asizeof 确定其大小。但是asize of和sys.getsizeof给出的大小有相当大的差异
from pympler import asizeof
import cPickle as pickle
path = "agg_397127.pkl"
temp = pickle.load(open(path, 'rb'))
temp
{397127: RandomForestRegressor(bootstrap=True, criterion='band_predict',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=1000, n_jobs=1,
oob_score=False, random_state=0, verbose=0, warm_start=False)}
asizeof.asizeof(temp)
1328504
asizeof.flatsize(temp)
import sys
sys.getsizeof(temp)
280
谁能解释一下为什么会有这样的差异?
最佳答案
sys.getsizeof()
返回传递给它的对象的大小 - 在您的示例中,这是一个只有一个条目的字典。它不包括字典引用的复杂类实例的大小,也不包括该实例引用的任何对象的大小。任何只有几个条目(在我的 Python 版本上最多 5 个)的字典都会返回完全相同的数字。
您正在使用的 assizeof
模块尝试递归地累加所有这些引用对象的大小。在这种情况下,考虑到返回的大小和 pickle 大小之间的巨大差异,它似乎做得不太好(但请注意,这些数字永远不会完全相等,因为磁盘上 pickle 的格式必然是与内存中实际对象的格式不同)。
关于python - pympler asizeof 与 sys.getsizeof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34787327/
我有以下二维位图: num = 521 arr = [i == '1' for i in bin(num)[2:].zfill(n*n)] board = [arr[n*i:n*i+n] for i
我一直在检查函数sys.getsizeof ,我知道这会返回正在传递的参数的大小(以字节为单位)。 我有一些使用 C 的经验,在知道某些类型的大小的情况下,我可以计算出某些值的大小。我已经用这个函数进
这个问题已经有答案了: "sys.getsizeof(int)" returns an unreasonably large value? (1 个回答) 已关闭 5 年前。 import sys p
我正在尝试创建一个大小为 1 MB 的列表。而以下代码有效: dummy = ['a' for i in xrange(0, 1024)] sys.getsizeof(dummy) Out[1]: 9
我在 Python 3.7 的 IDLE 中制作了两个列表,名称分别是 a 和 b它们在初始化方面会有所不同,但内容是相同的(正如我所想,但也许我错了) >>>a = [1,2,3,4] >>>a [
在使用 sys.getsizeof() 时,我注意到随着 ints 的大小增加,它会返回更高的值,这表明它们使用了更多的内存: >>> sys.getsizeof(3) 28 >>> >>> sys.
我刚刚运行了这些代码: v = [1,2,'kite',100**100] for x,y in enumerate(v): print ("{} size is: {}".format(y,
我正在尝试创建一个大小为 1 MB 的列表。而以下代码有效: dummy = ['a' for i in xrange(0, 1024)] sys.getsizeof(dummy) Out[1]: 9
这个问题在这里已经有了答案: How do I measure the memory usage of an object in python? (2 个回答) 关闭3年前。 我想计算一个对象使用的内
当我运行以下代码时,我分别得到3和36作为答案。 x ="abd" print len(x) print sys.getsizeof(x) 有人可以向我解释一下两者之间有什么区别吗? 最佳答案 在所有
我注意到当存储到 NumPy 数组时,nbytes 和 getsizeof 返回两个不同的值。 例子: import sys import numpy as np x = np.random.rand
我有一个大小为 10240 字节的文件。这是我获取文件大小的脚本: fh = open(name, "r") data = fh.read(10240) print sys.getsizeof(dat
为什么会这样?列表(有开销)不应该比字符串大吗? import sys print(sys.getsizeof('a'*1000)) # output is 1049 print(sys.getsiz
python 版本:Python 3.6.0b3(默认,2016 年 11 月 16 日,16:55:09) 我有以下输出: >>> sys.getsizeof([0 for x in range(1
我很好奇 - 为什么sys.getsizeof调用返回的列表数小于其元素之和? import sys lst = ["abcde", "fghij", "klmno", "pqrst", "uvwxy
为什么长度为1的python的sys.getsizeof()比长度为2的字符串的str大?(对于长度>2,该关系似乎如预期的单调增加)。 例子: >>> from string import asci
我很好奇 - 为什么 sys.getsizeof调用为列表返回一个小于其元素总和的数字? import sys lst = ["abcde", "fghij", "klmno", "pqrst", "
我想在python中检查int数据类型的大小: import sys sys.getsizeof(int) 结果是“436”,这对我来说没有意义。无论如何,我想知道我的机器将占用多少字节 (2,4,.
当我运行以下代码时,我分别得到 3 和 36 作为答案。 x ="abd" print len(x) print sys.getsizeof(x) 谁能给我解释一下它们之间有什么区别? 最佳答案 它们
我正在玩 python 列表,我想在不使用列表时从内存中删除它。(我有大数据列表,可能有数千或数百万个元素..数据类型-> 浮点型) 我试过这段代码,看看删除在 python 中是如何工作的(示例)
我是一名优秀的程序员,十分优秀!