使用Psutil统计进程内存时差值输出异常问题排查
问题分析与解答
你的代码中,日志格式化字符串的占位符数量和传递的参数数量不匹配,导致实际输出的内容并非你预期的差值。
问题根源
你使用的格式化字符串是:
"{}:consumed memory (before, after, diff): {:,}"
其中包含2个占位符:
- 第一个
{}用于填充函数名func.__name__ - 第二个
{:,}仅能匹配1个数值参数
但你向format()传递了4个参数:func.__name__, mem_before, mem_after, mem_after - mem_before。Python的str.format()会按顺序匹配参数,第二个占位符只会取第一个数值参数mem_before(也就是函数执行前的内存占用值),剩下的mem_after和差值参数会被直接忽略。
这就是为什么你看到的输出数值并非预期的差值,而是函数执行前的内存占用数据。
修复方案
修改格式化字符串,添加对应三个数值的占位符,确保每个参数都能被正确输出:
logging.info("{}:consumed memory (before, after, diff): {:,}, {:,}, {:,}".format( func.__name__, mem_before, mem_after, mem_after - mem_before))
内容的提问来源于stack exchange,提问作者Alejandro
相关产品推荐
相关产品推荐

