xml对象的tocsv需要花费太多时间才能完成



我有一个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')

最新更新