可以尝试除了提高Python的性能

时间:2014-08-06 07:33:14

标签: python performance try-catch

在python中,如果我们要检查字典中是否存在一个元素,try可以像这样使用,

try:
     mydict["condition"]
except:
     raise Exception("not exist")

此外,更优雅的方式是防御性编程。

if "condition" in mydict:
     mydict["condition"]
else:
     raise Exception("not exist")

并且,我认为try exception会导致软件中断,因此性能可能会很差。 但是,使用以下测试代码,似乎try except可以提高性能。

import time

# count the executive time
def count_time(func):
    def wrap(*args):
        start = time.time()
        func(*args)
        end = time.time()
        print "func:%s  time:(%0.3f ms)" % (func.func_name, (end-start) * 1000)
    return wrap

@count_time
def exists_use_coarse_try(maxval):
    dict_list = {"something":"...."}
    try:
        for item in range(0, maxval):
            dict_list["something"]
    except:
        pass

@count_time
def not_use_try_fair(maxval):
    dict_list = {"something":"...."}
    for item in range(0, maxval):
        if "do_something" in dict_list :
            dict_list["something"]
        else:
            raise Exception("I know it exists!") 

def run(maxval):
    print "maxval:%s" % maxval
    exists_use_coarse_try(maxval)
    not_use_try_fair(maxval)   

if __name__ == "__main__":
    run(10000000)

结果是

maxval:10000000
func:exists_use_coarse_try  time:(901.000 ms)
func:not_use_try_fair  time:(1121.000 ms)

我的问题是:try except是否可以提高Python的性能?

0 个答案:

没有答案