2015-02-24 66 views
2

我運行了mprof run some-executable,它生成了一個*.dat文件。「mprof run <executable>」:每個輸出欄代表什麼?

*.dat文件的每一列代表什麼?

[email protected]$ 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 

那些第一/第二/第三列代表什麼?

[編輯]: 另外我無法運行mprof run --python。 這裏是錯誤(importerror)我越來越....看起來像它不能得到config的定義

(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 

回答

1

第1列: 「MEM」 僅僅是一個標籤。

第2列:以兆字節爲單位的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)。

編輯:針對您發佈的導入錯誤&回溯:因爲你正在運行的文件"../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命令,並且可以從任何目錄運行它。

+0

「mprof run --python file.py」適用於獨立(獨立)文件。但是我想在我的項目中使用這個,其中一個文件嚴重依賴於許多其他文件(用於導入...)。在那些運行{mprof run --python file.py}的情況下變得非常棘手。它開始給很多{ImportErrors} – vikas 2015-02-25 06:40:59

+0

好吧,什麼樣的ImportErrors?什麼導入失敗?我沒有看到任何讓mprof更難用於大型項目的事情。如果你可以正常運行一個程序,它也應該在mprof下運行。 – 2015-02-25 17:36:19

+0

如何運行一個程序(在本例中是「myfile.py」)。這個文件沒有任何主要的....它被許多其他的python文件調用。所以我怎麼才能運行這個文件作爲獨立的....我已經粘貼ImportError我得到的答案...見上面 – vikas 2015-02-26 05:20:44

1

如果有人來這裏與mprof在Windows(像我)不工作的問題,請執行以下操作:

安裝memory_profiler

1)去你的Python \ Scripts文件夾,更改後您的文件mprof類型相同的文件夾,以mprof.py

2)如在1)中,創建新的文件mprof,添加有以下文本

@迴響

蟒蛇 「%〜dpn0.py」 %*

3)保存文件,然後將其類型更改mprof.bat

現在一切都應該工作。 祝你好運!