gpt4 book ai didi

python - Python 中大文件中分割线的内存问题

转载 作者:行者123 更新时间:2023-11-28 21:51:34 27 4
gpt4 key购买 nike

我正在尝试从磁盘读取一个巨大的文件 (~2GB) 并将每一行拆分为多个字符串:

def get_split_lines(file_path):
with open(file_path, 'r') as f:
split_lines = [line.rstrip().split() for line in f]
return split_lines

问题是,它试图在内存中分配几十GB。我发现如果我按以下方式更改我的代码,它不会发生:

def get_split_lines(file_path):
with open(file_path, 'r') as f:
split_lines = [line.rstrip() for line in f] # no splitting
return split_lines

即,如果我不拆分行,内存使用量会急剧下降。有什么方法可以解决这个问题,也许是一些聪明的方法来存储分割线而不填满主内存?

感谢您的宝贵时间。

最佳答案

拆分后,您有多个对象:一个元组加上一些字符串对象。除了构成原始字符串的实际字符集之外,每个对象都有自己的开销。

与其将整个文件读入内存,不如使用生成器。

def get_split_lines(file_path):
with open(file_path, 'r') as f:
for line in f:
yield line.rstrip.split()

for t in get_split_lines(file_path):
# Do something with the tuple t

这并不妨碍你写类似的东西

lines = list(get_split_lines(file_path))

如果您真的需要将整个文件读入内存。

关于python - Python 中大文件中分割线的内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30034474/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com