我在从类的实例中为函数计时时遇到了一些实际问题。我不确定我的方法是否正确(以前从未使用过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计时器实用程序,这可能对您的情况很有用。它也非常简单直观:你为什么要在类内的计时本身计时?如果你不在课堂上计时,你只需传递一个参考。一、 e
(当然类本身是多余的,我假设您有一个complexer用例,其中一个简单的方法是不够的)。
一般来说,只要传递一个包含/配置了所有设置的可调用文件。如果要传递要计时的字符串,它们应该包含所有必要的设置,即
如果您真的非常需要类内部的计时,请将调用包装为一个本地方法,即
要解决初始错误,可以在类中使用timeit,其参数如下:
相关问题 更多 >
编程相关推荐