2017-09-17 44 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