测量 Django 查询集内存使用情况的策略

San*_*Kim 5 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))
Run Code Online (Sandbox Code Playgroud)

由于迭代queryset,Django将访问数据库并且结果将被缓存,并且通过获取 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))
Run Code Online (Sandbox Code Playgroud)