首页 > 解决方案 > 如何在不在多个地方调用时间的情况下对多个功能进行计时?

问题描述

我试图弄清楚如何在不增加多行时间的情况下对多个功能(单个执行时间)进行计时。

这是我尝试过的:

func_list = [m1strat(kite, state,bnf_qty=100),nifty_m1strat(kite, nifty_state, q_h = nifty_qty_d,q_n = nifty_qty),\
         bnf_maintainpos_fut(kite, trail=0.4),nifty_maintainpos_fut(kite, trail=0.4),bank_nifty_opt(kite,order_df),\
         nifty_opt(kite,order_df),maintain_pos(kite)]
def time_taken(func_list):
    import time
    for func in func_list:
        start = time.time()
        try:
            func
        except:
            traceback.print_exc()
            pass
        end = time.time()
        print('Time taken by' + func + ': '+ str(start-end))

当我尝试运行它时,我相信这些函数在列表中运行。

试图弄清楚如何让这个工作。

谢谢

标签: pythonpython-3.x

解决方案


这应该可以解决您所说的问题:

func_list = [lambda: m1strat(kite, state,bnf_qty=100), 
             lambda: nifty_m1strat(kite, nifty_state, q_h = nifty_qty_d,q_n = nifty_qty),
             lambda: bnf_maintainpos_fut(kite, trail=0.4),
             lambda: nifty_maintainpos_fut(kite, trail=0.4),
             lambda: bank_nifty_opt(kite,order_df),
             lambda: nifty_opt(kite,order_df),maintain_pos(kite)]
def time_taken(func_list):
    import time
    for func in func_list:
        start = time.time()
        try:
            func
        except:
            traceback.print_exc()
            pass
        end = time.time()
        print('Time taken by' + func + ': '+ str(start-end))

python中的lambda关键字基本上只是定义单行函数的一种快速方法,查看这个解释以了解更多信息。


推荐阅读