2017-09-17 13 views
0

Nach dem docs on line_profiler kann ich meinen Code gut profilieren, aber wenn ich die Ausgabe mit python -m line_profiler script_to_profile.py.lprof sehe, sehe ich nur 27 Zeilen Code. Ich erwarte etwa 250, denn das ist die Länge der Funktion, die ich dem @profile Decorator hinzugefügt habe. Meine Ausgabe sieht so aus:line_profiler zeigt nur eine kleine Anzahl von Zeilen

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] 

Es ist in der Mitte einer for-Schleife abgeschnitten.

+0

Es scheint es einen anderen Code aufgreift. Normalerweise wird die for-Schleife n + 1 mal ausgeführt. Könntest du versuchen, ein [mcve] zu machen? Das würde es dir leichter machen, dir zu helfen. – MSeifert

Antwort

1

Sie haben möglicherweise die Quelldatei nach dem Erstellen der Profildatei geändert, versuchen Sie es erneut. weil der Quellcode line_profiler gedruckt aus der Datei auf der Festplatte gelesen wird, ref:

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

+1

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. –

+0

@DonaldDuck danke für deinen Vorschlag, aber es ist schwer, in diesem Fall das relevante Code-Snippet zu abstrahieren. – georgexsh

+0

@ will-adler beantwortet das deine Frage? – georgexsh

Verwandte Themen