我在从类的实例中计时函数时遇到了一些麻烦。我不确定我是否会以正确的方式进行操作(之前从未使用过timeIt),并且尝试了第二个参数导入内容的一些变体,但没有运气。这是我正在做的一个愚蠢的例子:
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有关,它创建了一个小的虚拟环境来运行该函数,但是我必须传递给第二个参数以使其全部满意吗?
最佳答案
如果您愿意考虑使用timeit
的替代方法,我最近发现了stopwatch计时器实用程序,在您的情况下可能会有用。它也非常简单直观:
import stopwatch
class TimedClass():
def __init__(self):
t = stopwatch.Timer()
# do stuff here
t.stop()
print t.elapsed
关于python - Python-类中的Timeit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3609148/