2017-09-17 68 views
0

繼line_profiler上的docs後,我能夠簡單地分析我的代碼,但是當我使用python -m line_profiler script_to_profile.py.lprof查看輸出時,我只能看到27行代碼。我期望看到大約250,因爲這是我添加了@profile裝飾器的函數的長度。我的輸出如下所示:line_profiler只顯示少量行

Timer unit: 1e-06 s 

Total time: 831.023 s 
File: /Users/will/Repos/Beyond12/src/student_table.py 
Function: aggregate_student_data at line 191 

Line #  Hits   Time Per Hit % Time Line Contents 
============================================================== 
    191            # load files 
    192            files = os.listdir(datadir) 
    193 
    194            tabs = ['Contact', 'Costs_Contributions', 'Course', 'EducationalHistory', 'Events', 'FinancialAidScholarship', 
    195   1   764 764.0  0.0    'PreCollegiateExam', 'QualitativeInformation', 'Student_Performance', 'Task', 'Term'] 
    196            special_contact_id = {'Contact': 'Id', 
    197   1   7  7.0  0.0       'Events': 'WhoId', 
    198   1   6  6.0  0.0       'QualitativeInformation': 'Alumni', 
    199   1   6  6.0  0.0       'Student_Performance': 'Contact', 
    200   1   6  6.0  0.0       'PreCollegiateExam': 'Contact ID'} 
    201   1   6  6.0  0.0 
    202   1   5  5.0  0.0  # todo: make dictionary of the columns that we'll be using, along with their types? 
    203 
    204            df = {} 
    205            for tab in tabs: 
    206   1   6  6.0  0.0   # match tab titles to files by matching first 5 non-underscore characters 
    207  12   115  9.6  0.0   filename = filter(lambda x: tab.replace('_', '')[:5] in x.replace('_', '')[:5], files)[0] 

它在for循環的中間被截斷。

+0

看來它拿起一些其他的代碼。通常'for'循環執行n + 1次。你可以試着做[mcve]嗎?這會讓你更容易幫助你。 – MSeifert

回答

1

您可能在創建配置文件結果文件後修改了源文件,請嘗試重新運行。 因爲印刷的源代碼line_profiler從磁盤上的文件,參考文獻如下:

https://github.com/rkern/line_profiler/blob/master/line_profiler.py#L190

+1

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分 ,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能變爲 無效。 –

+0

@DonaldDuck謝謝你的建議,但在這種情況下很難抽象出相關的代碼片段。 – georgexsh

+0

@ will-adler這是否回答了您的問題? – georgexsh