评估Django查询集的内存使用量的策略

时间:2018-12-28 09:02:20

标签: python django

我想测量Django queryset使用多少内存。

例如,我尝试简单的方法。

import psutil
process = psutil.Process(os.getpid())
s = process.memory_info().rss  # in bytes
for i in queryset:
    pass
e = process.memory_info().rss  # in bytes
print('queryset memory: %s' % (e-s))

由于迭代querysetDjango将访问数据库,并且结果将被缓存,并且通过获取Python进程的内存使用情况,我尝试测量queryset的内存使用情况。

我想知道访问是否正确,或者有什么方法可以衡量我的目标。

此度量是为了预测尝试获取大量查询结果时是否会出现问题,以及是否会从导致问题的行数中得出结论。

我知道,如果要避免缓存queryset的结果,可以使用iterator()。 但是,iterator()还应该确定chunk_size参数以减少命中数据库的数量,并且根据chunk_size的不同,内存使用情况也会有所不同。

import psutil
process = psutil.Process(os.getpid())
s = process.memory_info().rss  # in bytes
for i in queryset.iterator(chunk_size=10000):
    pass
e = process.memory_info().rss  # in bytes
print('queryset memory: %s' % (e-s))

0 个答案:

没有答案