Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django/Python中优化RAM使用的热点?_Python_Django - Fatal编程技术网

在Django/Python中优化RAM使用的热点?

在Django/Python中优化RAM使用的热点?,python,django,Python,Django,我需要帮助来减少此python脚本的RAM使用: tempproducts = TempProducts.objects.filter() for url in tempproducts: scrap_and_save_product(url.url,True,0) 报废和保存产品是一个使用BeautifulSoup报废数据并保存在数据库中的功能。。 TempProducts拥有约100000种产品 RAM使用率每30分钟增加约50 MB RAM使用日志: 220.059 MB

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

tempproducts = TempProducts.objects.filter()

for url in tempproducts:
    scrap_and_save_product(url.url,True,0)
报废和保存产品
是一个使用BeautifulSoup报废数据并保存在数据库中的功能。。 TempProducts拥有约100000种产品

RAM使用率每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使用。。。使用元组还是列表更好

  • 您应该向我们显示
    报废和保存产品的代码
    功能
  • 尝试对大数据进行内存效率更高的查询。详细说明。希望这些有帮助
  • 您应该向我们显示
    报废和保存产品的代码
    功能
  • 尝试对大数据进行内存效率更高的查询。详细说明。希望这些有帮助
    使用
    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;
    

    使用
    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;
    
    使用。但别忘了它不会缓存结果

    对于只返回大量对象的QuerySet 需要访问一次,这会导致更好的性能和 记忆力显著下降

    使用。但别忘了它不会缓存结果

    对于只返回大量对象的QuerySet 需要访问一次,这会导致更好的性能和 记忆力显著下降


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

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

    不幸的是,我无法向您显示,因为它是私有代码我将尝试您的提示链接不幸的是,我无法向您显示,因为它是私有代码我将尝试您的提示链接我将调试设置为false,现在我的RAM没有增加“”同样重要的是要记住,当在DEBUG打开的情况下运行时,Django将记住它执行的每个SQL查询。这在调试时很有用,但在生产服务器上,它会快速消耗内存。”“我将DEBUG设置为false,现在我的RAM没有增加。”“同样重要的是,要记住,在打开DEBUG的情况下运行时,Django将记住它执行的每个SQL查询。这在调试时很有用,但在生产服务器上,它会快速消耗内存。”“”