J'essaie de savoir combien de temps il faut pour exécuter une instruction Python, alors j'ai regardé en ligne et j'ai trouvé que la bibliothèque standard fournit un module appelé timeit qui prétend faire exactement cela:
import timeit
def foo():
# ... contains code I want to time ...
def dotime():
t = timeit.Timer("foo()")
time = t.timeit(1)
print "took %fs\n" % (time,)
dotime()
Cependant, cela produit une erreur:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in dotime
File "/usr/local/lib/python2.6/timeit.py", line 193, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
NameError: global name 'foo' is not defined
Je suis encore nouveau dans Python et je ne comprends pas parfaitement tous les problèmes de portée qu'il a, mais je ne sais pas pourquoi cet extrait de code ne fonctionne pas. Des pensées?
Avec Python 3, vous pouvez utiliser
globals=globals()
De la documentation :
la source
globals
pas un paramètre pour Python 2timeit
Vous pouvez essayer ce hack:
la source
t = timeit.Timer("foo()", "from __main__ import foo")
). Surtout si vous souhaitez tester plusieurs fonctions différentes, cela vous fera économiser beaucoup de frappe!import builtins
et 'builtins .__ dict __. Update (locals ())'Depuis le temps, vos affaires ne sont pas prises en compte.
la source
ajouter dans votre configuration "import thisfile;"
puis lorsque vous appelez la fonction de configuration myfunc (), utilisez "thisfile.myfunc ()"
par exemple "thisfile.py"
la source