热以优化 Django/Python 中的 RAM 使用



>我需要帮助来减少这个python脚本的RAM使用:

tempproducts = TempProducts.objects.filter()
for url in tempproducts:
    scrap_and_save_product(url.url,True,0)

scrap_and_save_product是一个使用美丽汤抓取数据并将其保存在数据库中的功能。TempProducts拥有约100,000种产品

每 30 分钟增加约 50 MB 的 RAM 使用率

内存使用日志:

220.059  MB 
271.594  MB 
313.316 MB
355.492 MB
373.516 MB
402.266 MB
437.328 MB
470.746 MB
507.195 MB
543.059 MB
574.215 MB
614.906 MB
643.902 MB
742.559 MB
787.93 MB
823.988 MB
856.949 MB
896.645 MB
931.93 MB
964.68 MB

如何准确检查哪个数据结构占用了我的 RAM?如何减少 Python/Django 中的 RAM 使用量? ...使用元组或列表更好吗?

  1. 您应该向我们展示scrap_and_save_product函数的代码。
  2. 尝试对大数据进行更节省内存的查询。此处描述的详细信息。希望这些有帮助!

确保设置中有DEBUG = False。 如果此设置为 true,则会保留 SQL 结果以供调试。

使用 iterator()。但不要忘记它不会缓存结果。

对于仅返回大量对象的查询集 需要访问一次,这可以带来更好的性能和 内存显著减少。

使用 tempproducts=TempProducts.objects.filter().values('url')

从代码中显示的内容来看,您只需要数据库中的 url。相反,您正在获取存储在表中的所有内容,这些表最终保存在RAM中。

查询:tempproducts=TempProducts.objects.filter()转换为以下内容:

SELECT * from tempproducts_table;

temproducts = TemProducts.objects.filter().values('url',)翻译为:

SELECT url from tempproducts_table;

最新更新