python - 如何从代码中检查当前实例的内存使用情况

标签 python google-app-engine memory-management

我计划使用 GAE Python GCS 客户端库将大文件(大小可能从几 kB 到数百 MB)写入 GCS。我将构建内容以迭代方式写入文件。此内容存储在一个变量(例如,“X”)中,该变量在循环的每次迭代中与更多内容连接在一起。每次迭代后,我想检查我的代码的当前内存使用情况,以便我可以停止添加更多内存。如果我继续向该变量 ("X") 添加更多内容,我预计我可能会达到内存限制,并且该实例甚至可能以非正常方式关闭。 一旦达到内存限制,我想停止迭代。

如何在代码中检查我的应用程序当前实例的内存使用情况?

我没有使用后端或模块。可以GAE Python Runtime API用于此?如果是,是否已弃用该 API?

示例代码

SAFE_MARGIN = 10 
INSTANCE_MEMORY_LIMIT = 128 

content = "" 
for record in record_list: 
    content = content + record.description 
    if ((memory_usage + SAFE_MARGIN) >= INSTANCE_MEMORY_LIMIT): # CHECK IF MEMORY LIMIT IS REACHED HERE 
        break # STOP ADDING MORE 
# WRITE FILE TO GCS HERE (value of "content" variable) 

更新
由于我没有得到任何回复并且在 Google 文档中找不到任何内容,我提出了 new Feature Request with Google .

最佳答案

您可以使用 Python Runtime API 检查前端和后端实例的内存使用情况:

from google.appengine.api.runtime import memory_usage

SAFE_MARGIN = 10 
INSTANCE_MEMORY_LIMIT = 128 

content = "" 
for record in record_list: 
    content = content + record.description 
    if ((int(memory_usage().current() + SAFE_MARGIN) >= INSTANCE_MEMORY_LIMIT): # CHECK IF MEMORY LIMIT IS REACHED HERE 
        break # STOP ADDING MORE 
# WRITE FILE TO GCS HERE (value of "content" variable)

但是如果你经常内存不足,考虑升级实例类...

关于python - 如何从代码中检查当前实例的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24879296/

相关文章:

ios - 不确定是不是内存泄漏(ARC)

java - 具有 180 个属性的分片计数器

python - 如何在 Google AppEngine Python37 中获取凭据

firefox - 以编程方式确定Firefox中每个选项卡的内存使用情况?

python - 如何使用 dill 序列化类定义?

java - GAE HDR : Are entity retrievals by key eventually consistent within a XG transaction?

android - 描述Android中的 "top"命令

python - DataFrame float 到整数?

python - 将基本变量列表写入文本文件

python - PyObject_Call 崩溃