我正在尝试从远程路径读取python中的20 gb文件。下面的代码以块的形式读取文件,但是如果由于任何原因丢失了与远程路径的连接,我必须重新启动整个读取过程。有没有一种方法可以使我从上一个读取的行继续,并继续追加到我要创建的列表中。这是我的代码:
from tqdm import tqdm
chunksize=100000
df_list = [] # list to hold the batch dataframe
for df_chunk in tqdm(pd.read_csv(pathtofile, chunksize=chunksize, engine='python')):
df_list.append(df_chunk)
train_df = pd.concat(df_list)
答案 0 :(得分:1)
您有超过20GB的RAM吗?因为您正在将整个文件读入RAM,并将其表示为Python对象。 df_list.append(df_chunk)
是元凶。
您需要做的是:
df_list
中那样保留对已用块的引用,否则Python的垃圾回收将为您完成此任务。请注意,您可以始终将中间/摘要数据保留在RAM中。只是不要一直将整个 input 保留在RAM中。
或获得64GB / 128GB RAM,以您更快的速度为准。有时候,仅仅将更多的资源投入到一个问题中会更快。