如何在不调用多个位置的时间的情况下计时多个功能?

时间:2019-03-24 17:21:45

标签: python python-3.x

我试图弄清楚如何对多个功能(单独的执行时间)进行计时,而不用多行地增加时间。

这是我尝试过的:

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))

当我尝试运行此代码时,我相信这些功能会在列表中运行。

试图弄清楚如何使它工作。

谢谢

1 个答案:

答案 0 :(得分:1)

这应该可以解决您指出的问题:

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关键字基本上只是定义单行函数的一种快速方法,请查看this explanation来了解更多信息。