当前位置: 首页 > news >正文

网站开发第几类商标宁波seo怎么做推广渠道

网站开发第几类商标,宁波seo怎么做推广渠道,admin管理员登录,好的案例展示网站1 python函数装饰器参数统计调用时间和次数 python在函数装饰器外层定义一个函数生成封闭作用域来保存装饰器入参,供装饰器使用。 1.1 装饰器统计调用时间和次数 描述 通过类的可调用实例装饰器来统计函数每次调用时间和总调用时间,以及调用次数。 …

1 python函数装饰器参数统计调用时间和次数

python在函数装饰器外层定义一个函数生成封闭作用域来保存装饰器入参,供装饰器使用。

1.1 装饰器统计调用时间和次数

描述

通过类的可调用实例装饰器来统计函数每次调用时间和总调用时间,以及调用次数。

(1) time.perf_counter()获取当前时间,单位秒;

(2) 调用函数func前和后的时间差,为func的执行时间usetime;

(3) 将每次的执行时间usetime累加,获得总时间alltime;

(4) 每调用一次func,calls计增一次获得总次数;

(5) 比较列表解析和map内置函数生成列表的调用时间;

(6) map在py2返回列表,在py3返回迭代器,需用list转为列表;

示例

>>> import time,sys
>>> class TimeCount:def __init__(self,func):self.func=funcself.alltime=0self.calls=0def __call__(self,*args,**kargs):begin=time.perf_counter()res=self.func(*args,**kargs)usetime=time.perf_counter()-beginself.alltime+=usetimeself.calls+=1callstr=' 调用 {0[0]} {0[1]} 次 'calltpl=self.func.__name__,self.callstimestr='{0[0]}:usetime={0[1]:.6f},alltime={0[2]:.6f}'timetpl=self.func.__name__,usetime,self.alltimeresstr='res[0]={0[0]},res[-1]={0[1]},len(res)={0[2]}'restpl=res[0],res[-1],len(res)print(callstr.format(calltpl).center(50,'-'))print(timestr.format(timetpl))print(resstr.format(restpl),'\n')>>> @TimeCount
def listcomp(N):return [x*2 for x in range(N)]>>> if sys.version_info[0]==2:@TimeCountdef mapcall(N):return map((lambda x:x*2),range(N))
else:@TimeCountdef mapcall(N):# py3的map返回迭代器需用list转换# 否则统计的时间与listcomp不一致return list(map((lambda x:x*2),range(N)))>>> xtpl=5,50000,500000,1000000
>>> tuple(map(listcomp,xtpl))
---------------- 调用 listcomp 1-----------------
listcomp:usetime=0.000005,alltime=0.000005
res[0]=0,res[-1]=8,len(res)=5 ---------------- 调用 listcomp 2-----------------
listcomp:usetime=0.002395,alltime=0.002400
res[0]=0,res[-1]=99998,len(res)=50000 ---------------- 调用 listcomp 3-----------------
listcomp:usetime=0.026660,alltime=0.029060
res[0]=0,res[-1]=999998,len(res)=500000 ---------------- 调用 listcomp 4-----------------
listcomp:usetime=0.053023,alltime=0.082084
res[0]=0,res[-1]=1999998,len(res)=1000000 (None, None, None, None)
>>> tuple(map(mapcall,xtpl))
----------------- 调用 mapcall 1-----------------
mapcall:usetime=0.000005,alltime=0.000005
res[0]=0,res[-1]=8,len(res)=5 ----------------- 调用 mapcall 2-----------------
mapcall:usetime=0.003963,alltime=0.003968
res[0]=0,res[-1]=99998,len(res)=50000 ----------------- 调用 mapcall 3-----------------
mapcall:usetime=0.041263,alltime=0.045231
res[0]=0,res[-1]=999998,len(res)=500000 ----------------- 调用 mapcall 4-----------------
mapcall:usetime=0.083637,alltime=0.128868
res[0]=0,res[-1]=1999998,len(res)=1000000 (None, None, None, None)
>>> '{:.6f}'.format(mapcall.alltime)
'0.128868'
>>> '{:.6f}'.format(listcomp.alltime)
'0.082084'
>>> '{:.6f}'.format(mapcall.alltime/listcomp.alltime)
'1.569957'

1.2 嵌套函数统计电影时间和次数

描述

通过嵌套函数来统计函数每次调用时间和总调用时间,以及调用次数。

(1) time.perf_counter()获取当前时间,单位秒;

(2) 调用函数func前和后的时间差,为func的执行时间usetime;

(3) 将每次的执行时间usetime累加,获得总时间alltime;

(4) 每调用一次func,calls计增一次获得总次数;

(5) 比较列表解析和map内置函数生成列表的调用时间;

(6) map在py2返回列表,在py3返回迭代器,需用list转为列表;

(7) 将alltime和calls赋值给func进行返回,供后续获取;

(8) 通过nonlocal修改嵌套作用域的变量alltime和calls;

示例

>>> import time,sys
>>> def timecount_func(func):alltime=0calls=0def tcf_wrapper(*pargs,**kargs):begin = time.perf_counter()res=func(*pargs,**kargs)usetime = time.perf_counter() - beginnonlocal alltimenonlocal callsalltime+=usetimecalls+=1timestr='{0[0]}:usetime={0[1]:.6f},alltime={0[2]:.6f}'timetpl=func.__name__,usetime,alltimecallstr=' 调用 {0[0]} {0[1]} 次 'calltpl=func.__name__,callsresstr='res[0]={0[0]},res[-1]={0[1]},len(res)={0[2]}'restpl=res[0],res[-1],len(res)print(callstr.format(calltpl).center(50,'-'))print(timestr.format(timetpl))print(resstr.format(restpl),'\n')func.alltime=alltimefunc.calls=callsreturn tcf_wrapper>>> def listcomp(N):return [x*2 for x in range(N)]>>> if sys.version_info[0]==2:def mapcall(N):return map((lambda x:x*2),range(N))
else:def mapcall(N):return list(map((lambda x:x*2),range(N)))>>> xtpl=5,50000,500000,1000000
>>> tuple(map(timecount_func(listcomp),xtpl))
---------------- 调用 listcomp 1-----------------
listcomp:usetime=0.000005,alltime=0.000005
res[0]=0,res[-1]=8,len(res)=5 ---------------- 调用 listcomp 2-----------------
listcomp:usetime=0.002478,alltime=0.002482
res[0]=0,res[-1]=99998,len(res)=50000 ---------------- 调用 listcomp 3-----------------
listcomp:usetime=0.031966,alltime=0.034448
res[0]=0,res[-1]=999998,len(res)=500000 ---------------- 调用 listcomp 4-----------------
listcomp:usetime=0.068800,alltime=0.103248
res[0]=0,res[-1]=1999998,len(res)=1000000 (None, None, None, None)
>>> tuple(map(timecount_func(mapcall),xtpl))
----------------- 调用 mapcall 1-----------------
mapcall:usetime=0.000006,alltime=0.000006
res[0]=0,res[-1]=8,len(res)=5 ----------------- 调用 mapcall 2-----------------
mapcall:usetime=0.004435,alltime=0.004441
res[0]=0,res[-1]=99998,len(res)=50000 ----------------- 调用 mapcall 3-----------------
mapcall:usetime=0.041257,alltime=0.045698
res[0]=0,res[-1]=999998,len(res)=500000 ----------------- 调用 mapcall 4-----------------
mapcall:usetime=0.082711,alltime=0.128409
res[0]=0,res[-1]=1999998,len(res)=1000000 (None, None, None, None)
>>> '{:.6f}'.format(mapcall.alltime)
'0.128409'
>>> '{:.6f}'.format(listcomp.alltime)
'0.103248'
>>> '{:.6f}'.format(mapcall.alltime/listcomp.alltime)
'1.243693'

1.3 函数装饰器参数

通过装饰器参数指定配置选项。在装饰的时候传入一个标签和一个跟踪控制标志。

提供一个输出标签,以及打开或关闭跟踪消息,

用法

def close_scope_func(label='',trace=True):def decorator(func):def onCall(*args):passfunc(*args)passreturn decorator@close_scope_func('梯阅线条')
def test_func(x):passtest_func('tyxt')

描述

装饰器参数需在外层添加一个函数生成一个封闭作用域用来保存参数,供装饰器使用。

(1) 在装饰器外层定义一个函数,并且指定装饰器需要的入参;

(2) 外层函数需返回一个可调用的装饰器,给到被装饰函数;

(3) 装饰函数时,传入对应入参即可;

示例

>>> import time,sys
>>> def timecount_ctr(label='',trace=True):class TimeCount:def __init__(self,func):self.func=funcself.alltime=0self.calls=0def __call__(self,*args,**kargs):begin=time.perf_counter()res=self.func(*args,**kargs)usetime=time.perf_counter()-beginself.alltime+=usetimeself.calls+=1if trace:callstr=' 调用 {0[0]} {0[1]} 次 'callval=self.func.__name__,self.callstimestr='{0[0]}:usetime={0[1]:.6f},alltime={0[2]:.6f}'timeval=self.func.__name__,usetime,self.alltimeresstr='res[0]={0[0]},res[-1]={0[1]},len(res)={0[2]}'resval=res[0],res[-1],len(res)print(label,callstr.format(callval).center(50,'-'))print(label,timestr.format(timeval))print(label,resstr.format(resval),'\n')return TimeCount>>> @timecount_ctr('[listcomp]==>')
def listcomp(N):return [x*2 for x in range(N)]>>> if sys.version_info[0]==2:@timecount_ctr('[mapcall]==>')def mapcall(N):return map((lambda x:x*2),range(N))
else:@timecount_ctr('[mapcall]==>')def mapcall(N):# py3的map返回迭代器需用list转换# 否则统计的时间与listcomp不一致return list(map((lambda x:x*2),range(N)))>>> xtpl=5,50000,500000,1000000
>>> tuple(map(listcomp,xtpl))
[listcomp]==> ---------------- 调用 listcomp 1-----------------
[listcomp]==> listcomp:usetime=0.000005,alltime=0.000005
[listcomp]==> res[0]=0,res[-1]=8,len(res)=5 [listcomp]==> ---------------- 调用 listcomp 2-----------------
[listcomp]==> listcomp:usetime=0.002641,alltime=0.002646
[listcomp]==> res[0]=0,res[-1]=99998,len(res)=50000 [listcomp]==> ---------------- 调用 listcomp 3-----------------
[listcomp]==> listcomp:usetime=0.027689,alltime=0.030335
[listcomp]==> res[0]=0,res[-1]=999998,len(res)=500000 [listcomp]==> ---------------- 调用 listcomp 4-----------------
[listcomp]==> listcomp:usetime=0.052438,alltime=0.082773
[listcomp]==> res[0]=0,res[-1]=1999998,len(res)=1000000 (None, None, None, None)
>>> tuple(map(mapcall,xtpl))
[mapcall]==> ----------------- 调用 mapcall 1-----------------
[mapcall]==> mapcall:usetime=0.000004,alltime=0.000004
[mapcall]==> res[0]=0,res[-1]=8,len(res)=5 [mapcall]==> ----------------- 调用 mapcall 2-----------------
[mapcall]==> mapcall:usetime=0.003975,alltime=0.003979
[mapcall]==> res[0]=0,res[-1]=99998,len(res)=50000 [mapcall]==> ----------------- 调用 mapcall 3-----------------
[mapcall]==> mapcall:usetime=0.040665,alltime=0.044644
[mapcall]==> res[0]=0,res[-1]=999998,len(res)=500000 [mapcall]==> ----------------- 调用 mapcall 4-----------------
[mapcall]==> mapcall:usetime=0.098298,alltime=0.142942
[mapcall]==> res[0]=0,res[-1]=1999998,len(res)=1000000 (None, None, None, None)
>>> '{:.6f}'.format(mapcall.alltime)
'0.142942'
>>> '{:.6f}'.format(listcomp.alltime)
'0.082773'
>>> '{:.6f}'.format(mapcall.alltime/listcomp.alltime)
'1.726914'

文章转载自:
http://boxkeeper.jjpk.cn
http://normal.jjpk.cn
http://hexagonal.jjpk.cn
http://acetify.jjpk.cn
http://redware.jjpk.cn
http://stypticity.jjpk.cn
http://impropriation.jjpk.cn
http://talgo.jjpk.cn
http://admonitorial.jjpk.cn
http://shibui.jjpk.cn
http://unburied.jjpk.cn
http://stimulation.jjpk.cn
http://psychology.jjpk.cn
http://fiddlefucking.jjpk.cn
http://vacuome.jjpk.cn
http://qua.jjpk.cn
http://fascism.jjpk.cn
http://holme.jjpk.cn
http://jcb.jjpk.cn
http://thermoduric.jjpk.cn
http://believer.jjpk.cn
http://bagnio.jjpk.cn
http://melolonthid.jjpk.cn
http://viral.jjpk.cn
http://hermit.jjpk.cn
http://recalculation.jjpk.cn
http://sulfide.jjpk.cn
http://copybook.jjpk.cn
http://choledochotomy.jjpk.cn
http://inedible.jjpk.cn
http://lignification.jjpk.cn
http://mouthpiece.jjpk.cn
http://verb.jjpk.cn
http://gynaecologic.jjpk.cn
http://cyc.jjpk.cn
http://uncanny.jjpk.cn
http://termite.jjpk.cn
http://autotrophy.jjpk.cn
http://accomplishment.jjpk.cn
http://artotype.jjpk.cn
http://moll.jjpk.cn
http://slavonia.jjpk.cn
http://gaberones.jjpk.cn
http://pileorhiza.jjpk.cn
http://nextel.jjpk.cn
http://disimmure.jjpk.cn
http://psychoeducational.jjpk.cn
http://tammerkoski.jjpk.cn
http://holly.jjpk.cn
http://spindly.jjpk.cn
http://hucksteress.jjpk.cn
http://vaccination.jjpk.cn
http://miniate.jjpk.cn
http://dun.jjpk.cn
http://prisunic.jjpk.cn
http://alchemize.jjpk.cn
http://unredeemed.jjpk.cn
http://exhaustive.jjpk.cn
http://washingtonite.jjpk.cn
http://estafette.jjpk.cn
http://permittivity.jjpk.cn
http://artificer.jjpk.cn
http://cyrix.jjpk.cn
http://chevrotain.jjpk.cn
http://maya.jjpk.cn
http://maduro.jjpk.cn
http://darkish.jjpk.cn
http://kief.jjpk.cn
http://cryoelectronics.jjpk.cn
http://trampoline.jjpk.cn
http://equilibrate.jjpk.cn
http://subsultory.jjpk.cn
http://gating.jjpk.cn
http://macrophyte.jjpk.cn
http://psyche.jjpk.cn
http://figueras.jjpk.cn
http://caffeinic.jjpk.cn
http://moldavite.jjpk.cn
http://dittybop.jjpk.cn
http://rafferty.jjpk.cn
http://quinquennium.jjpk.cn
http://titubate.jjpk.cn
http://radicidation.jjpk.cn
http://testamentary.jjpk.cn
http://artware.jjpk.cn
http://cerebrotonic.jjpk.cn
http://crossbench.jjpk.cn
http://blear.jjpk.cn
http://whipless.jjpk.cn
http://jawan.jjpk.cn
http://unbaptized.jjpk.cn
http://citron.jjpk.cn
http://incretory.jjpk.cn
http://interrogate.jjpk.cn
http://dullhead.jjpk.cn
http://zorana.jjpk.cn
http://chloritize.jjpk.cn
http://roughride.jjpk.cn
http://fixt.jjpk.cn
http://orpharion.jjpk.cn
http://www.dt0577.cn/news/96168.html

相关文章:

  • 做二维码的网站aso苹果关键词优化
  • 网站建设文化渠道广州百度seo
  • 如何维护wordpress惠州seo外包平台
  • 网站需不需要备案友情链接的概念
  • 企业网站维护的要求包括百度查看订单
  • 电商网页精品欣赏网站抖音关键词推广怎么做
  • asp mysql做网站网络广告的收费模式有哪些
  • 网站 后台 javadz论坛如何seo
  • 医疗网站模版湛江seo推广公司
  • 北京响应式网站建设推荐免费制作自己的网页
  • 旅游网站开发系统电商营销策划方案
  • dreamware做网站小说搜索风云榜排名
  • 保定学校网站建设企业推广软件
  • 新网站收录多少关键词免费网站生成器
  • b2b网站优化怎么做百度权重4网站值多少钱
  • 学做面食最好的网站好看的网页设计作品
  • 用vs2005做网站设计江北seo页面优化公司
  • 网站空间和域名价格seo友情链接
  • 哪个网站找人做网页比较好seo综合查询是什么意思
  • php动态网站开发案例教程实训答案网络推广的概念
  • 部队网站建设方案网络营销心得体会1000字
  • 2345浏览器免费版qq群怎么优化排名靠前
  • 网站建设春节放假张家口网站seo
  • wordpress模板地址seo外包公司兴田德润
  • 泰安高端网站设计建设上海网站seo公司
  • 日本做a的动画视频网站网站快速排名互点软件
  • 中国洛阳网seo建站还有市场吗
  • 网站图怎么做才能小而清晰度全网营销国际系统
  • 网址导航类网站怎么做深圳高端seo公司助力企业
  • 如何做网站 知乎seo做的好的网站