timeit Modul in Python erkennt numpy Modul nicht

9

Ich möchte die Verarbeitungszeit zwischen zwei identischen Listen testen, speziell für eine normale Liste und eine numme Liste. Mein Code ist

%Vor%

Berechnung für t ist in Ordnung, aber für u NameError: der globale Name 'np' ist nicht definiert ist aufgeführt.

Wie soll ich es programmieren, um die Bearbeitungszeit zu bekommen?

    
user3211991 19.01.2014, 11:35
quelle

3 Antworten

11

Die Klasse timeit.Timer kann auf zwei verschiedene Arten verwendet werden.

Er kann Quellcode entweder zum Kompilieren oder Ausführen verwenden - in diesem Fall wird der Code in einer neuen Umgebung ausgeführt, in der nur der setup Code ausgeführt wurde, oder er kann eine aufrufbare, in diesem Fall die aufrufbare Prozedur ausführen wird nur aufgerufen (in Ihrer aktuellen Umgebung, wie jede andere aufrufbar).

Sie haben also zwei Möglichkeiten:

%Vor%

... oder ...

%Vor%

Im ersten Fall ist die Tatsache, dass Sie eine import numpy as np gemacht haben, irrelevant; Es hat keine Auswirkung auf die Umgebung, in der np.arange(1000) kompiliert und ausgeführt wird (und Sie müssen es daher in das setup=... -Bit einschließen).

Im zweiten Fall ist die Tatsache, dass Sie eine import numpy as np offensichtlich erstellt haben, relevant - sie betrifft die Umgebung, in der Ihr Code, einschließlich lambda: np.arange(1000) , ausgewertet wird.

    
abarnert 19.01.2014, 11:57
quelle
2

Verwenden Sie setup -Parameter:

%Vor%     
ndpu 19.01.2014 11:39
quelle
2

Um importierte Bibliotheken mit timeit zu verwenden, müssen Sie sie mit dem Schlüsselwort setup ( Dokumente ):

%Vor%

Mit dem Argument setup keyword können Sie Ihren Code einrichten, z. B. externe Bibliotheken importieren oder Funktionen aus Ihrem Code mithilfe von from __main__ import func importieren.

    
Ffisegydd 19.01.2014 11:39
quelle

Tags und Links