首页 > 解决方案 > 如何克服这种情况?

问题描述

我有一个程序逐行读取 CSV 文件,对于每一行,我处理一些值并将它们存储在一个列表中,然后将它们附加到一个列表中,最后,我有一个列表列表。

因为我测试的是小文件,所以没关系。但是当涉及到一个大文件时,我需要预测机器内存行为,为此我需要知道处理的 200.000.000(例如)行将如何需要内存。

我已经尝试了一些东西,但后来我遇到了我在下面简化的这个问题。

from sys import getsizeof

# Code 1
print("{} bytes".format(getsizeof([['3657f9f6395fc3ef8fe640','table_source','field_source']*4])))

# 72 bytes

###### different from ######

# Code 2
print("{} bytes".format(getsizeof([['3657f9f6395fc3ef8fe640','table_source','field_source'],
           ['3657f9f6395fc3ef8fe640','table_source','field_source'],
           ['3657f9f6395fc3ef8fe640','table_source','field_source'],
           ['3657f9f6395fc3ef8fe640','table_source','field_source']])))

# 96 bytes

# when checking the unique identity 

> [id(['3657f9f6395fc3ef8fe640','table_source','field_source'])*4]
 [10301192613920]

> [    id(['3657f9f6395fc3ef8fe640','table_source','field_source']),
       id(['3657f9f6395fc3ef8fe640','table_source','field_source']),
       id(['3657f9f6395fc3ef8fe640','table_source','field_source']),
       id(['3657f9f6395fc3ef8fe640','table_source','field_source'])   ]
[2575297689160, 2575297689160, 2575297689160, 2575297689160]

当您以代码 1 的方式尝试时,如果在对象/值的内存中存在某种索引,则字节大小会有所不同。我该如何克服这个问题并进行近似估计?

标签: python-3.xlistsize

解决方案


推荐阅读