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_queriesmü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()

Antworten auf die Frage(5)

Ihre Antwort auf die Frage