Google app engine 什么在使用所有这些内存来获取google ndb?

Google app engine 什么在使用所有这些内存来获取google ndb?,google-app-engine,flask,google-cloud-datastore,app-engine-ndb,Google App Engine,Flask,Google Cloud Datastore,App Engine Ndb,当我从数据存储中获取1000个模型时,它使用的内存比预期的多得多。我的数据存储表明我的存储空间大于18000,但总大小为8.31MB Application 18025 8.31 MB 以下是在禁用缓存的情况下获取实体的代码 def memoryForAThousandApplicationsNoCache(): ndb_ctx = ndb.get_context() ndb_ctx.set_cache_policy(lambda key: False) ndb_ctx.set_m

当我从数据存储中获取1000个模型时,它使用的内存比预期的多得多。我的数据存储表明我的存储空间大于18000,但总大小为8.31MB

Application 18025 8.31 MB
以下是在禁用缓存的情况下获取实体的代码

def memoryForAThousandApplicationsNoCache():
  ndb_ctx = ndb.get_context()
  ndb_ctx.set_cache_policy(lambda key: False)
  ndb_ctx.set_memcache_policy(lambda key: False)
  startUsage = memory_usage().current()
  applications = Application.query().fetch(1000)
  return "Memory usage after applications:  %d MB" % (memory_usage().current() - startUsage)
我得到

Memory usage after applications: 10 MB

什么在消耗这些内存?我是否误用了内存?

我猜您没有任何理由在App Engine之外分析或深入了解Python内存使用情况。除了对象带来的许多好处之外,在将对象表示为Python对象时,还会有惊人的开销(对于低级程序员来说)。当您使用类似于
ndb
的东西时,在幕后会有额外的(Python)数据结构

谷歌为“python内存开销”寻找更多背景。有一个像样的图表可能很有启发性