Sorgu kümesini values_list () üzerinde dönüştürmek, doğrudan values () 'dan daha fazla bellek açısından verimli olacaktır. Yöntem values (), dikte listesinin bir sorgu kümesini (anahtar: değer çiftleri) döndürdüğünden, values_list () yalnızca tuple listesini (saf veri) döndürür. Yaklaşık% 50 bellek tasarrufu sağlar, sadece pd.DataFrame () 'i çağırdığınızda sütun bilgilerini ayarlamanız yeterlidir.
Yöntem 1:
queryset = models.xxx.objects.values ("A", "B", "C", "D")
df = pd.DataFrame (list (sorgu kümesi)) ## çok fazla bellek tüketir
#df = pd.DataFrame.from_records (sorgu kümesi) ## çalışıyor ancak bellek kullanımında fazla değişiklik yok
Yöntem 2:
queryset = models.xxx.objects.values_list ("A", "B", "C", "D")
df = pd.DataFrame (liste (sorgu kümesi), sütunlar = ["A", "B", "C", "D"]) ## bu% 50 bellek tasarrufu sağlar
#df = pd.DataFrame.from_records (sorgu kümesi, sütunlar = ["A", "B", "C", "D"]) ## Çalışmıyor. Veri türü ile çöktü sorgu kümesi değil liste.
Bunu projemde> 1 milyon satır verisi ile test ettim, tepe bellek 2G'den 1G'ye düşürüldü.