[英]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使用量? ...最好使用元组或列表?
scrap_and_save_product
函数的代码。 确保您的设置中的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.