Messen Sie die Zeit einer Funktion mit Argumenten in Python
Ich versuche die Zeit von zu messenraw_queries(...)
bisher erfolglos. Ich habe festgestellt, dass ich das timeit-Modul verwenden sollte. Das Problem ist, dass ich die Argumente nicht aus der Umgebung an die Funktion übergeben kann (= ich weiß nicht wie).
Wichtiger Hinweis: Vor dem Anrufraw_queries
müssen wir ausführenphase2()
(Umgebungsinitialisierung).
Randnotiz: Der Code ist in Python 3.
def raw_queries(queries, nlp):
""" Submit queries without getting visual response """
for q in queries:
nlp.query(q)
def evaluate_queries(queries, nlp):
""" Measure the time that the queries need to return their results """
t = Timer("raw_queries(queries, nlp)", "?????")
print(t.timeit())
def phase2():
""" Load dictionary to memory and subsequently submit queries """
# prepare Linguistic Processor to submit it the queries
all_files = get_files()
b = LinguisticProcessor(all_files)
b.loadDictionary()
# load the queries
queries_file = 'queries.txt'
queries = load_queries(queries_file)
if __name__ == '__main__':
phase2()
Danke für jede Hilfe.
UPDATE: Wir können anrufenphase2()
mit dem zweiten Argument vonTimer
. Das Problem ist, dass wir die Argumente brauchen(queries, nlp)
aus der Umwelt.
UPDATE: Die bisher beste Lösung mit Hilfe von unutbu (nur was sich geändert hat):
def evaluate_queries():
""" Measure the time that the queries need to return their results """
t = Timer("main.raw_queries(queries, nlp)", "import main;\
(queries,nlp)=main.phase2()")
sf = 'Execution time: {} ms'
print(sf.format(t.timeit(number=1000)))
def phase2():
...
return queries, b
def main():
evaluate_queries()
if __name__ == '__main__':
main()