我有一个xml对象,它需要写入文件。我看到这需要1个多小时才能完成10000条记录。我尝试使用df_merge['xml'] = df_merge['xml'].astype(str)
进行转换。所花费的静止时间是相似的,即超过1小时只是astype(str)
花费更多的时间。因此,无论在何种情况下,完成to_csv
都需要1个多小时。那么,我能知道如何快速将大型xml对象写入文件吗?10000个xml的大小大约为600 MB。
df_merge.to_csv(settings.OUTPUT_XML, encoding='utf-8', index=False,
columns=['xml'])
后来我尝试使用np.savetxt
,它也需要类似的时间。
import numpy as np
np.savetxt('output_xml.txt', df_merge['xml'], encoding='utf-8', fmt="%s")
您可以考虑使用serialization
。一个很好的库是joblib
或其他常见的序列化工具,如pickle
一篇很好的Stack Overflow文章概述了差异以及何时使用每一个都在这里
在您的情况下,您可能能够序列化您的对象,并且使用下面的一些示例代码可以在更长的时间内完成:
# Import joblib's dump function
from joblib import dump
# For speed, keep compression = 0
dump(df_merge, 'df_merge.joblib')
# For smaller file size, you can increase compression, though it will slow your write time
# dump(df_merge, 'df_merge.joblib', compress=9)
然后可以使用joblib
加载文件,如下所示:
# Import joblib's load function
from joblib import load
# For speed, keep compression = 0
# Note, if you used compress=n, then it will take longer to load
df_merge = load('df_merge.joblib')