gpt4 book ai didi

python - 如何提高Python脚本的内存效率

转载 作者:行者123 更新时间:2023-12-01 06:10:47 25 4
gpt4 key购买 nike

此代码片段从我的数据库中提取所有文档,并将它们转储到 gzip 压缩文件中。 docs_to_dump 是一个 django 对象,包含所有要转储的文本文档。

os.chdir(dump_dir)
filename = 'latest-' + court_id + '.xml.gz.part'
with myGzipFile(filename, mode='wb') as z_file:
z_file.write('<?xml version="1.0" encoding="utf-8"?>\n<opinions dumpdate="' + str(date.today()) + '">\n')

for doc in docs_to_dump:
row = etree.Element("opinion",
dateFiled = str(doc.dateFiled),
precedentialStatus = doc.documentType,
local_path = str(doc.local_path),
time_retrieved = str(doc.time_retrieved),
download_URL = doc.download_URL,
caseNumber = doc.citation.caseNumber,
caseNameShort = doc.citation.caseNameShort,
court = doc.court.get_courtUUID_display(),
sha1 = doc.documentSHA1,
source = doc.get_source_display(),
id = str(doc.documentUUID),
)
if doc.documentHTML != '':
row.text = doc.documentHTML
else:
row.text = doc.documentPlainText.translate(null_map)
z_file.write(' ' + etree.tostring(row).encode('utf-8') + '\n')

# Close things off
z_file.write('</opinions>')

不幸的是,它也消耗了太多的内存,以至于操作系统对其进行了攻击。我认为通过写入“类似文件的对象”,压缩文件将即时生成,并且内存将保持相对较低。相反,它占用了数百 MB,然后崩溃了。

我不是压缩方面的专家,但我的印象是整个压缩文件都存储在内存中。

我应该有更好的方法吗?

编辑--整个文件在这里:https://bitbucket.org/mlissner/search-and-awareness-platform-courtlistener/src/2ca68efd8017/data-dumps/data-dumper.py

最佳答案

我认为安德鲁斯基可能是对的。如果您崩溃了,请尝试调整您的查询以使用 iterator方法

类似的东西。

docs_to_dump = Document.objects.all().order_by('court').iterator()

应该避免将整个查询集加载到内存中。

关于python - 如何提高Python脚本的内存效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6092417/

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