gpt4 book ai didi

python - django shell、django Rest Framework 序列化器和 cassandra 中的内存泄漏

转载 作者:行者123 更新时间:2023-12-01 01:14:22 28 4
gpt4 key购买 nike

我有一个像这样的 django cassandra 模型:

class Milad(DjangoCassandraModel):
name = columns.Text(primary_key=True)
bulkid = columns.BigInt(primary_key=True)
f1 = columns.UUID()
f2 = columns.UUID()
f3 = columns.UUID()
f4 = columns.UUID()
f5 = columns.UUID()
f6 = columns.UUID()
f7 = columns.UUID()
f8 = columns.UUID()
f9 = columns.UUID()
f10 = columns.UUID()

class Meta:
get_pk_field = "bulkid"

和以下序列化器:

from rest_framework import serializers

class BulkidSerializer(serializers.Serializer):
bulkid = serializers.IntegerField()

def to_representation(self, instance):
return instance.bulkid

我的表中有 220200 条记录。当我使用命令 python3 manage.py shell 打开 django shell 时a 执行以下操作我的内存使用量从 8.8GB 变为 10.8GB。

操作:

records = Milad.objects.all().limit(None)
data = BulkidSerializer(records, many=True).data

当我使用sys.getsizeof(data)时操作之后对象的大小约为 2MB,但当没有操作运行时,我的内存仍然是 10.8,并且在我关闭 shell 之前,内存中没有该大小的数据。有什么问题吗?

最佳答案

在某一时刻将所有结果具体化到内存中将导致内存使用量激增。 Python 运行时扩展内存而不立即将其返回给操作系统的情况并不罕见。除非您遇到资源限制,否则不必担心。

如果您想避免在内存中实现所有结果,则应使用驱动程序提供的分页。

By token with cqlengine

Paging in driver

关于python - django shell、django Rest Framework 序列化器和 cassandra 中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54501396/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com