Próbuję dowiedzieć się, ile czasu potrzeba na wykonanie instrukcji Pythona, więc sprawdziłem online i odkryłem, że standardowa biblioteka udostępnia moduł o nazwie timeit. że rzekomo dokładnie to zrobić:Uzyskiwanie "globalnej nazwy" foo "nie jest zdefiniowane" z czasem Pythona
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()
jednak to powoduje błąd:
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
wciąż jestem nowy w Pythonie i nie w pełni zrozumieć wszystkie zagadnienia zakresu studium ma, ale Nie wiem, dlaczego ten fragment nie działa. jakieś pomysły?
To działa! Jest to jednak dość głupi projekt interfejsu, jeśli muszę zarówno dostarczyć komendę, którą chciałbym wykonać jako ciąg, jak i zaimportować moduł __main__, aby działał. –
Python namespacing jest dla mnie kompletnym szaleństwem. Zakładam, że ma to sens dla pewnego rodzaju umysłu, ale ten rodzaj umysłu nie jest taki, jaki mi się wydaje. Dziękuję $ DEITY za Ruby, w moim przypadku. – womble
womble, to jest brodawka, a nie ogólny problem z pythonową przestrzenią nazw. Główny wątek: http://writeonly.wordpress.com/2008/09/12/using-python-timeit-to-time-functions/ zawiera linki do innych dyskusji na ten temat. –