“mprof run <executable>”:每个输出列代表什么?</executable>

时间:2015-02-24 17:15:22

标签: python memory-profiling

我运行mprof run some-executable并生成*.dat个文件。

*.dat文件的每一列表示什么?

vikas@some-host$ cat mprofile_20150224012014.dat              
CMDLINE python ../asl
MEM 0.332031 1424769614.8950
MEM 7.593750 1424769614.9954
MEM 8.816406 1424769615.0957
MEM 8.816406 1424769615.1960

第1 /第2 /第3列代表什么?

[编辑]: 另外我无法运行mprof run --python。 这是我得到的错误(importerror)....看起来它无法获得配置

的定义

(virtualenv)vikas @ host:$ ./mprof run --python ../ myfile.py

mprof:每0.1秒采样一次

作为Python程序运行......

Traceback (most recent call last):
File "/usr/lib64/python2.6/runpy.py", line 122, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib64/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "/home/vikask/memory_profiler-0.32/memory_profiler.py", line 853, in <module>
execfile(__file__, ns, ns)
File "../myfile.py", line 19, in <module>
from bsite import models, security
File "/home/vikas/bsite/models.py", line 12, in <module>
from bsite import config
ImportError: cannot import name config

2 个答案:

答案 0 :(得分:1)

第1栏:“MEM”只是一个标签。

第二栏:RSS(常驻集大小),以兆字节为单位。因此,您的流程最终使用8.8 MB。

第3栏:Unix时间戳:

>>> import time
>>> print(time.ctime(1424769615.1960))
Tue Feb 24 01:20:15 2015

看起来mprof只是记录流程大小。如果您想了解有关程序内部的更多具体细节(逐行),您似乎可以使用mprof run --python file.py获取该信息(您还需要使用@profile修饰您的函数,请参阅Usage section in the documentation)。

修改:响应ImportError&amp;您发布的追溯:您收到该错误是因为您将文件作为"../myfile.py"运行。由于您位于bsite目录之外,因此无法找到config.py文件。

你需要像这样运行程序:

 $ cd /home/vikas/bsite/
 $ /home/vikask/memory_profiler-0.32/mprof run --python myfile.py

这样您就可以在import工作的正确目录中。

让它发挥作用的另一种方法是build your project as a python package。执行此操作时,可以从任何位置正确导入文件。设置起来有点复杂,但这是个不错的主意。

另一个更糟糕的选择是修改PYTHONPATHsys.path以使导入起作用。例如:

$ cd /home/vikask/memory_profiler-0.32/
$ PYTHONPATH=/home/vikas/bsite/ ./mprof run --python ../myfile.py

最后,看起来您正在直接从memory_profiler源运行mprof命令。您可以通过在该目录中执行“python setup.py install”(或使用pip install memory_profiler)来安装软件包。然后你应该在你的PATH上有mprof命令,并且可以从任何目录运行它。

答案 1 :(得分:1)

如果有人遇到mprof无法在Windows上运行的问题(例如我),请执行以下操作:

安装memory_profiler

1)转到Python \ Scripts文件夹,将文件mprof类型更改为mprof.py

2)在与1)相同的文件夹中,创建新文件mprof,在那里添加以下文字

@echo off

python "%~dpn0.py" %*

3)保存文件并将其类型更改为mprof.bat

现在一切都应该有效。 祝你好运!