Python2.7 linecache&&timeit模块学习

linecache 

    当你试图优化从任何文件中读取任何行时,可以使用linecache模块,该模块采用cache缓存文件, 你可以在缓存中读取指定文件的指定行。

linecache提供了以下函数:

    linecache.getline(filename, lineno[, module_globals])
    通过lineno(行号)获取filename中的行,该函数永远不会返回异常,如果是error会返回空(''),如果文件名没有找到,函数则会通过sys.path包含的路径去查找。

    linecache.clearcache()
    清除cache。

     linecache.checkcache([filename])

    检查cache的有效性,如果文件在cache中,但是disk上的文件已经改变,你可以更新cache内容,如果没有提供文件名,它会检查所有在cache的内容。

eg:

>>> import linecache
>>> linecache.getline('/tmp/ttt',6)
'6\n'
>>> linecache.checkcache('/tmp/ttt')
>>> linecache.getline('/tmp/ttt',6)
'7\n'
>>> linecache.clearcache()

timeit
    提供了一个简单的方法,测试少量python代码块的运行时间,它既有命令行接口,也有python接口调用。
命令行接口使用:
python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [statement ...]
-n N  --number=N  执行多少次语句
-r N  --repeat=N  执行多少次timer 默认3次
-s statement --setup=statement  初始化时执行的声明语句
-t --time  使用time.time()
-c --clock  使用time.clock()
-v --verbose  显示更详细的信息

    有可能出现多行语句的情况,每行可以当作一个单独的语句声明,语句被引号包含,并且在要缩进的语句前面有空格,或者使用多个-s参数
eg:

root@vm11:/tmp#python -m timeit -s'text="abc";p="a"' 'p in text'
10000000 loops, best of 3: 0.0636 usec per loop

python接口使用:

timeit模块定义了三个函数和一个类
    timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000)
    用给定的语句创建一个timer实例,setup代码和timer函数执行timeit()方法number次

    timeit.repeat(stmt='pass', setup='pass', timer=<default timer>, repeat=3, number=1000000)
    用给定的语句创建一个timer实例,setup代码和timer函数执行repeat()方法number次,整个过程重复repeat次

    timeit.default_timer()
    默认的timer。

    class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)
    定义了三个方法,timeit、repeat、print_exc

eg

>>> import timeit
>>> t = timeit.Timer('char in text', setup='text = "sample string"; char = "g"')
>>> t.timeit()
0.09689593315124512
>>> t.repeat()
[0.09645605087280273, 0.09559297561645508, 0.09540891647338867]


你可能感兴趣的:(python2.7)