Python在不同的位置/类创建时间戳以记录功能块运行时

时间:2014-02-07 18:06:44

标签: python variables timestamp global

我知道如何创建基本时间戳:

t1 = time.time()
# program runs runs
t2 = time.time()
dt = t2 - t1

我的问题是,该程序是一个巨大的大块,它的工作原理,但它包含数千行和交互绕组类,方法调用,函数。

总而言之,这就是我想要实现的目标:

  1. 我想在一个班级的中间种植一个t1,
  2. 一些func调用此类,然后调用另一个类的其他类,依此类推,
  3. 在其他一些课程结束时,我想种一个t2,
  4. 然后在最后,我想输出dt = t2 - t1
  5. 我对全局变量有所了解,但不确定是否可以使用交叉模块,我的意思是t1可能来自abc.py,t2可能来自123.py,是否可能?

1 个答案:

答案 0 :(得分:0)

一个想法是创建一个带有全局变量的模块,这样就不会对命名空间造成太大污染。

这是mytimer.py:

import time

TIMER = None

def start():
    global TIMER
    TIMER = time.time()

def stop(msg=None):
    global TIMER
    msg = msg or "TIMER"
    if TIMER:
        print('%s -- %s' % (msg, time.time() - TIMER))
    else:
        print 'ERROR: TIMER is not set'

然后,假设您在module1.py中启动计时器:

import mytimer

def somefun():
    mytimer.start()

somefun()

你可以看到在另一个模块中调用mytimer.stop()时花了多少时间,这里是module2.py:

import mytimer
import module1

mytimer.stop(msg="Timer from module1:")

# restart timer
mytimer.start()
# .. do something here
# and then get timer with specific message
mytimer.stop(msg='Finished at')

这应该导致:

$ python module2.py 
Timer from module1 -- 3.81469726562e-06 sec
Finished at -- 9.53674316406e-07 sec