繁体   English   中英

是否热衷于优化Django / Python中的RAM使用率?

[英]Hot to optimize RAM usage in Django/Python?

我需要帮助来减少此python脚本的RAM使用量:

tempproducts = TempProducts.objects.filter()

for url in tempproducts:
    scrap_and_save_product(url.url,True,0)

scrap_and_save_product是使用BeautifulSoup scrap_and_save_product数据并将其保存在数据库中的函数。TempProducts拥有大约100,000个产品

每30分钟RAM使用量增加约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() 但是请不要忘记它不会缓存结果。

对于返回大量对象而只需要访问一次的QuerySet,这可以提高性能并显着减少内存。

使用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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM