为什么作为字典存储的文件要比fi占用更多的空间

2024-04-27 02:55:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大小为500MB的文件,如果我将该文件的每一行存储在字典设置中,如

file = "my_file.csv"
with open(file) as f:
    for l in f:
        delimiter = ','
        line = l.split(delimiter)
        hash_key = delimiter.join(line[:4])
        store_line = delimiter.join(line[4:])
        store_dict[hash_key] = store_line

为了检查我的内存,我通过观察htop来比较我的程序的内存使用情况,首先与上面的比较,然后将最后一行切换到

print(hash_key + ":" + store_line) 

这占用了<;100MB的内存。你知道吗

我的存储目录在内存中的大小大约是1.5GB。我检查了内存是否泄漏,找不到。删除这一行store_dict[hash_key] = store_line会导致程序占用<;100MB内存。为什么这会占用这么多内存?有没有办法把这些行作为字典存储起来,而不占用那么多内存?你知道吗


Tags: 文件csvstorekey内存lt程序字典
1条回答
网友
1楼 · 发布于 2024-04-27 02:55:03

即使store_linestr占用的内存量与磁盘上文件中相应的文本相同(它们通常不会占用相同的内存量,特别是在使用python3时,str的默认值为Unicode,dict也必然比文件占用更多的空间。dict不仅包含裸文本,还包含许多Python对象。你知道吗

每个dict键和值都是一个str,每个键和值不仅携带文本信息,还携带自己的长度和用于垃圾收集的引用计数。dict本身还需要存储有关其项的元数据,例如每个键的哈希和指向每个值的指针。你知道吗

如果文件中有几行非常长的行,那么应该期望Python表示具有相当的内存消耗。也就是说,如果您确定该文件使用与Python相同的编码。。。你知道吗

相关问题 更多 >