我想测量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))
由于迭代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))