python-3.x - 如何克服这种情况?
问题描述
我有一个程序逐行读取 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 的方式尝试时,如果在对象/值的内存中存在某种索引,则字节大小会有所不同。我该如何克服这个问题并进行近似估计?
解决方案
推荐阅读
- javascript - 使用 apollo/graphql 将文件上传到 mongodb 数据库
- javascript - 通过redux从firebase显示另一个组件中一个组件的数据
- javascript - 在一个文件夹中查找重复文件并删除最新的文件?(谷歌脚本)
- sql - Oracle SQL将一行中的列与同一列中的前一行进行比较
- python - ValueError:优化器在 pytorch 中得到了一个空的参数列表
- javascript - 如何在javascript中使用正则表达式查找匹配的字符串
- javascript - 更新数组中的对象(按值匹配)
- numpy - 创建向量矩阵之间所有可能平方差的 Numpy 数组
- c# - 集合视图中所选项目的圆角
- javascript - React/JS/TS - 表格不会呈现行