如何查看当前正在使用哪些变量?
Posted
技术标签:
【中文标题】如何查看当前正在使用哪些变量?【英文标题】:How to see which variables are currently in use? 【发布时间】:2021-02-08 11:52:02 【问题描述】:我目前正在编写一个占用大量内存的图像处理脚本,我很好奇脚本的哪些部分占用了大部分内存,以便我可以优化这些部分为了节省总内存使用量(因此能够处理更大的图像)。
但是,在我的脚本中调用了许多不同的子句和不同的处理函数,这使得很难跟踪当前分配了一些(或大量)内存的所有变量。我已经做到了,所以几个函数被称为新生成的进程(使用multiprocessing
),以确保它们在运行后不会留下任何变量。但是,我仍然看到在某些情况下使用了大量内存,我希望能够查明哪些变量占用了最大的空间。
我希望有可能以某种方式获得已用内存的报告。我不介意必须安装一些额外的软件包才能实现这一点。
【问题讨论】:
这里有一些想法:***.com/questions/552744/…。对于一般信息,您也可以使用 cProfile,例如python -m cProfile -s cumtime myscript.py
cProfile 如何分析整个脚本?例如,我是否可以使用cProfile.run('main()')
调用我的主函数,而我目前只是调用main()
?
不,在命令行中,只需按照我写的方式调用 python。打开命令行并输入python -m cProfile -s cumtime myscript.py
。在这里你会找到一个知道内存中特定对象大小的函数:***.com/questions/449560/…
不确定,但这样看起来它在我使用multiprocessing.Process
生成另一个进程的第一个实例时崩溃,然后.start()
ing 该进程。 cProfile 不支持使用多个进程分析程序吗?
具有多处理功能的 cProfile:***.com/questions/11041683/…
【参考方案1】:
我使用模块“memory_profiler”。
pip install memory_profiler
from memory_profiler import profiler
@profiler
def xxx():
print("Hello World!")
【讨论】:
但是这个模块只能查看某行代码的占用情况 这实际上看起来非常有用。但是,你说它只查看某行的内存使用情况?通过pypi.org/project/memory-profiler 它显示了整个函数的全部内存使用情况,对吧?你的评论是什么意思? 可以查看函数每一行的内存使用情况,但是不能用“@profiler”查看变量的内存使用情况。百度翻译不是很准确,表达可能有误。我的英语很差。 这看起来可能很有用!谢谢,我会检查一下,如果这是我需要的,我会将您的答案标记为已接受!以上是关于如何查看当前正在使用哪些变量?的主要内容,如果未能解决你的问题,请参考以下文章