执行期间的类方法性能测试

时间:2014-06-09 18:30:49

标签: python timeit

我有一个类,其中包含一个方法T,供另一个类methodM使用,我想计算methodT的运行时间。

以下是我尝试过的事情

Class MyClass(threading.Thread):
    def __init__():
       threading.Thread.__init__(self)

    def run_porcess(self, args)
       # start a subprocess and print output

    def run(self):
       # ==========================================
       # method A:
       # ==========================================
       start_time = time.clock()
       self.run_process('args')
       elapsed = time.clock() - start_time
       print(elapsed)

       #===========================================
       # method B:
       #===========================================
       timeit.timeit('self.run_process("args")')     

使用方法A,我可以得到一个结果,但我相信它与timeit给出的结果不太准确。

但是,使用方法B,timeit会产生NameError,因为它无法识别self.run_process

我已阅读this帖子,并尝试添加timewrapper方法

def timewrapper(args)                       
     return self.run_process(args)

它对我不起作用,因为它提供NameError: global name 'timewrapper' is not defined

我的问题是如何使用timeit正确实现方法B?

注意:我不能使用核心python以外的模块

1 个答案:

答案 0 :(得分:-1)

你使用的是什么版本的python?在版本3.3 time.clock() is deprecated中,建议您使用perf_counter()process_time()。这可能导致不准确。