クラスのインスタンス内から関数のタイミングをとるのに本当に問題があります。私はそれを正しい方法で行っているかどうかはわかりません(以前はtimeItを使用したことがありません)。2番目の引数のいくつかのバリエーションをインポートして試しましたが、運がありませんでした。これが私がしていることのばかげた例です:
import timeit
class TimedClass():
def __init__(self):
self.x = 13
self.y = 15
t = timeit.Timer("self.square(self.x, self.y)")
try:
t.timeit()
except:
t.print_exc()
def square(self, _x, _y):
print _x**_y
myTimedClass = TimedClass()
走ったとき、それは自己について不平を言います。
Traceback (most recent call last):
File "timeItTest.py", line 9, in __init__
t.timeit()
File "C:\Python26\lib\timeit.py", line 193, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
self.square(self.x, self.y)
NameError: global name 'self' is not defined
これは、TimeItが関数を実行するための小さな仮想環境を作成することと関係がありますが、すべてを幸せにするために2番目の引数に何を渡す必要がありますか?