我正在通过使用chunksize pd read_csv读取10Gb文件,但是我注意到read_csv的速度越来越慢。此外,经过一些迭代,我将收到有关“我的磁盘快满了”的警告消息。感觉当加载新的数据块时,pd不会删除旧的内存。如果我能以某种方式告诉python,在加载chuncksize数据帧并写出输出之后,擦除该块的内存并用新块替换它,那将是很棒的
我已将块大小从10000更改为3000,并且read_csv()越来越慢的问题仍然存在。读取文件大块后,我对其进行了一些操作(根据某些条件删除了一些行),并将新输出写入csv文件。
for i in range(0, number_lines, chucksize):
read_all_cat=pd.read_csv(all_cat_file_name, error_bad_lines=False, sep='\\t', header=None, nrows=chucksize, skiprows=i, engine='python')
答案 0 :(得分:0)
您可以在for循环的末尾使用垃圾收集器。
import gc
for i in range(0, number_lines, chucksize):
read_all_cat=pd.read_csv(file, **kwargs)
# ...
# other operations
# ...
del read_all_cat, other_variables
gc.collect()
或者您可以使用pd.read_csv(**options)
chunksize 选项,它可能会更有效。