鱼C论坛

 找回密码
 立即注册
查看: 2582|回复: 1

python学习手册,比较程序运行快慢,525面的样题(keyword-only)

[复制链接]
发表于 2016-11-5 11:05:54 | 显示全部楼层 |阅读模式
30鱼币
本帖最后由 wow7jiao 于 2016-11-5 15:12 编辑

import sys, mytimer
reps = 10000
repslist = range(reps)

def forLoop():
    res = []
    for x in repslist:
        res.append(abs(x))
    return res
# timeseqs
def listComp():
    return [abs(x) for x in repslist]

def mapCall():
    return list(map(abs, repslist))

def genExpr():
    return list(abs(x) for x in repslist)

def genFunc():
    def gen():
        for x in repslist:
            yield abs(x)
    return list(gen())

print(sys.version)
for tester in (mytimer.timer, mytimer.best):
    print('<%s>' % tester.__name__)
    for test in (forLoop, listComp, mapCall, genExpr, genFunc):
        elapsed, result = tester(test)
        print ('-' * 35)
        print ('%-9s: %.5f => [%s...%s]' %
               (test.__name__, elapsed, result[0], result[-1]))


#mytimer
import time, sys
if sys.platform[:3]  == 'win':
    timefunc = time.clock
else:
    timefunc = time.time
def trace(*args):pass#请问这个trace收集下面的4个参数(func, pargs, kargs, _reps)
有什么用?

def timer(func, *pargs, **kargs):   
    _reps = kargs.pop('_reps', 1000)
    trace(func, pargs, kargs, _reps)   
    repslist = range(_reps)
    start = timefunc()
    for i in repslist:
        ret = func(*pargs, **kargs)
    elapsed = timefunc() - start
    return (elapsed, ret)
def best(func, *pargs, **kargs):#best为什么运行起来快这么多?
    _reps = kargs.pop('_reps', 50)
    best = 2 ** 32  #<== best  = 2**32 ??这步不是多余的?
    for i in range(_reps):
        (time, ret) = timer(func, *pargs, _reps=1, **kargs)#请问上面timer只有3个参数(func, *pargs, **kargs),为什么这里要填4个?   
    return (best, ret)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-2 12:30:50 | 显示全部楼层
在学习python学习手册时,我也遇到了同样的困惑,请教下帖子的答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 15:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表