我不知道我还能在哪里问这个问题,所以在这里问。我想知道,如果我在使用多个数据库表的页面上施加多个 Django 过滤器,每当用户访问此页面时,这是否会影响 ram 消耗,因为在用户之前,只有过滤后的数据会得到反射(reflect)。我在基于 ubuntu 的虚拟机上使用带有 postgresql 的 django,如果有任何文档有助于理解 ram 利用率,请提出建议。
最佳答案
Django 过滤器和查询集是惰性的。它的实际意思是,在您评估它们之前,您实际上并没有访问数据库。引用官方documentation -
Internally, a QuerySet can be constructed, filtered, sliced, and generally passed around without actually hitting the database. No database activity actually occurs until you do something to evaluate the queryset.
因此,您的 RAM 中唯一占用的空间实际上是包含查询集和您的程序的列表。正是在评估查询并从数据库中提取数据时,即(取决于提取的数据量),内存被填满。另外,看看 iterators 是个好主意。还有
关于python - Django 过滤器是否会增加每个用户的内存消耗 : Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52094791/