tracemalloc的开销有多大?
How big is the overhead of tracemalloc?
我想在生产系统中记录 Python 脚本的当前内存使用情况。 AWS 有 Container Insights,但它们隐藏得非常好,我不确定如何在其他仪表板/日志记录和更改系统中正确使用它们。另外,我不确定日志是否达到峰值内存。
Python脚本是生产系统。它是 运行 在 AWS 上的一个 Docker 容器中,我 运行 遇到了以前方法的问题 (link)。
tracemalloc 好像可以给我想要的信息:
# At the start of the script
import tracemalloc
tracemalloc.start()
# script running...
# At the end
current, peak = tracemalloc.get_traced_memory()
logger.info(f"Current memory usage is {current / 10**6} MB")
logger.info(f"Peak memory usage was {peak / 10**6} MB")
tracemalloc.stop()
但是,文档状态:
The tracemalloc module is a debug tool
那么将其包装在生产代码中是不是一个坏主意?它有多少开销?还有其他原因不在生产中使用它吗?
(我很清楚代码的哪些部分需要最多内存以及达到峰值内存的位置。我想监视那部分(或者更确切地说是那几个对象/几行代码的大小). tracemalloc 的替代方法似乎是使用一些东西 like this)
我一直在尝试回答同样的问题。我找到的最佳答案来自
https://www.mail-archive.com/python-list@python.org/msg443129.html
其中引用了基于简单实验的 tracemalloc 内存使用量增加 3-4 倍。
我想在生产系统中记录 Python 脚本的当前内存使用情况。 AWS 有 Container Insights,但它们隐藏得非常好,我不确定如何在其他仪表板/日志记录和更改系统中正确使用它们。另外,我不确定日志是否达到峰值内存。
Python脚本是生产系统。它是 运行 在 AWS 上的一个 Docker 容器中,我 运行 遇到了以前方法的问题 (link)。
tracemalloc 好像可以给我想要的信息:
# At the start of the script
import tracemalloc
tracemalloc.start()
# script running...
# At the end
current, peak = tracemalloc.get_traced_memory()
logger.info(f"Current memory usage is {current / 10**6} MB")
logger.info(f"Peak memory usage was {peak / 10**6} MB")
tracemalloc.stop()
但是,文档状态:
The tracemalloc module is a debug tool
那么将其包装在生产代码中是不是一个坏主意?它有多少开销?还有其他原因不在生产中使用它吗?
(我很清楚代码的哪些部分需要最多内存以及达到峰值内存的位置。我想监视那部分(或者更确切地说是那几个对象/几行代码的大小). tracemalloc 的替代方法似乎是使用一些东西 like this)
我一直在尝试回答同样的问题。我找到的最佳答案来自
https://www.mail-archive.com/python-list@python.org/msg443129.html
其中引用了基于简单实验的 tracemalloc 内存使用量增加 3-4 倍。