ich habe mal wieder ein kurioses Problem. Und zwar habe ich eine Methode einer Klasse, die hauptsächlich aus 2 Teilen besteht. Um zu überprüfen welcher dieser Teile am meisten Zeit benötigt und dann aubzuschätzen an welcher Stelle Optimierungsbedarf besteht, habe ich die 2 Teile in 2 innere Funktionen (richtiger Terminus?) gepackt. Nun möchte ich sie gerne via timeit aufrufen und die Ausführungszeit ausgeben.
Code: Alles auswählen
import timeit
class Foo:
def bar(self):
def bar1():
print '1'
def bar2():
print '2'
#bar1()
#bar2()
t = timeit.Timer("bar1()", "from __main__ import Foo")
print t.timeit()
t = timeit.Timer("bar2()", "from __main__ import Foo")
print t.timeit()
Foo().bar()
Code: Alles auswählen
Traceback (most recent call last):
File "D:\snippet.py", line 15, in <module>
Foo().bar()
File "D:\snippet.py", line 11, in bar
print t.timeit()
File "C:\Programme\Python25\lib\timeit.py", line 161, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
NameError: global name 'bar1' is not defined
Es scheint als würde timeit die Funktionen bar1 und bar2 in einem völlig anderen Scope aufrufen und deshalb nicht auf die Funktionen zugreifen können...
Aber so recht bringt mich das auch nicht weiter
Vielleicht kann jemand helfen.
lunas