我在从类的实例中计时函数时遇到了一些麻烦。我不确定我是否会以正确的方式进行操作(之前从未使用过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/

10-12 22:17