美文网首页
timeit函数的globals参数

timeit函数的globals参数

作者: despone | 来源:发表于2017-03-18 22:33 被阅读0次

    class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>, globals=None)

    timeit是用来测试小段代码执行时间的工具,其中在py3中添加了globals参数,用来传入一个命名空间,网上找了资料,并没有发现详细说这个的,我大概测试了一下,一般的py中的namespace是dict的键值对,我自己创建了一个键值对,测试了可以从这个键值对读取参数。也就不用想之前from main import那样写很长的代码了。
    要是直接将globals()当作参数传入,可以使用全局的变量了,特别方便。
    谢谢Peter Otten在2008年提出这个想法。
    <pre>

    encoding=utf8

    import timeit
    import random
    def max_k(a):
    k = len(a)//2
    for index in range(k):
    for rest in range(index+1, len(a)):
    if a[index] < a[rest]:
    a[index], a[rest] = a[rest], a[index]
    return a[k-1]

    def max_k2(a, k):
    if len(a) == 0:
    return "shuruweikong"

    result, index = paixu(a)
    if index == k:
        return result[k]
    elif k < index:
        return max_k2(result[0:index], k)
    elif k > index:
        return max_k2(result[index+1:], k-index-1)
    

    def paixu(a):
    p = a[0]
    left = []
    right = []
    for item in a[1:]:
    if item <= p:
    left.append(item)
    elif item > p:
    right.append(item)
    index = len(left)
    return left+[p]+right, index

    def get_test():
    test = []
    for i in range(8):
    j = random.random() * 10
    test.append(j)
    return test

    def main():
    test = [5, 25, 7, 2, 4, 8, 34, 76, 23]
    # test2 = [5, 4, 7, 2, 3, 8]
    k = len(test)//2

    new_k = len(test) - k
    namespace = {
        "test2":get_test(),
        "max_k2":max_k2
    }
    print(timeit.timeit("max_k2(test2, 5)",globals=namespace))
    

    </pre>

    相关文章

      网友评论

          本文标题:timeit函数的globals参数

          本文链接:https://www.haomeiwen.com/subject/lqbpnttx.html