我的世界怎么做购买点卷网站/网页制作软件下载
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'
相关文章:

python函数装饰器参数统计调用时间和次数
1 python函数装饰器参数统计调用时间和次数 python在函数装饰器外层定义一个函数生成封闭作用域来保存装饰器入参,供装饰器使用。 1.1 装饰器统计调用时间和次数 描述 通过类的可调用实例装饰器来统计函数每次调用时间和总调用时间,以及调用次数。 …...

机器学习之集成学习AdaBoost
概念 AdaBoost(Adaptive Boosting)是一种迭代的集成学习算法,其主要目标是通过组合多个弱学习器来创建一个强大的模型。以下是AdaBoost算法的主要步骤: 初始化样本权重: 为每个训练样本分配相等的权重,通常设为 w i = 1 N w_i = \frac{1}{N} w...

行云部署成长之路 -- 慢 SQL 优化之旅 | 京东云技术团队
当项目的SQL查询慢得像蜗牛爬行时,用户的耐心也在一点点被消耗,作为研发,我们可不想看到这样的事。这篇文章将结合行云部署项目的实践经验,带你走进SQL优化的奇妙世界,一起探索如何让那些龟速的查询飞起来!…...

Windows权限提升
0x01 简介 提权可分为纵向提权与横向提权: 纵向提权:低权限角色获得高权限角色的权限; 横向提权:获取同级别角色的权限。 Windows常用的提权方法有:系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略首…...

win系统搭建Minecraft世界服务器,MC开服教程,小白开服教程
Windows系统搭建我的世界世界服务器,Minecraft开服教程,小白开服教程,MC 1.19.4版本服务器搭建教程。 此教程使用 Mohist 1.19.4 服务端,此服务端支持Forge模组和Bukkit/Spigot/Paper插件,如果需要开其他服务端也可参…...

word2vec中的CBOW和Skip-gram
word2cev简单介绍 Word2Vec是一种用于学习词嵌入(word embeddings)的技术,旨在将单词映射到具有语义关联的连续向量空间。Word2Vec由Google的研究员Tomas Mikolov等人于2013年提出,它通过无监督学习从大规模文本语料库中学习词汇…...

在ios上z-index不起作用问题的总结
最近在维护一个H5老项目时,遇到一个问题,就是在ios上z-index不起作用,在安卓上样式都是好的。 项目的架构组成是vue2.x vux vuex vue-router等 用的UI组件库是vux 在页面中有一个功能点,就是点选择公司列表的时候,会…...

力扣labuladong一刷day59天动态规划
力扣labuladong一刷day59天动态规划 文章目录 力扣labuladong一刷day59天动态规划一、509. 斐波那契数二、322. 零钱兑换 一、509. 斐波那契数 题目链接:https://leetcode.cn/problems/fibonacci-number/description/ 思路:这是非常典型的一道题&#x…...

pyenv环境找不到sqlite:No module named _sqlite3
前言 一般遇到这个问题都在python版本管理或者虚拟环境切换中遇到,主要有两个办法解决,如下: 解决方法1 如果使用的pyenv管理python环境时遇到没有_sqlite3 库,可以将当前pyenv的python环境卸载 pyenv uninstall xxx然后在系统…...

Histone H3K4me2 Antibody, SNAP-Certified™ for CUTRUN
EpiCypher是一家为表观遗传学和染色质生物学研究提供高质量试剂和工具的专业制造商。EpiCypher推出的CUT&RUN级别的Histone H3K4me2 Antibody符合EpiCypher的批次特异性SNAP-CertifiedTM标准,在CUT&RUN中具有特异性和高效的靶点富集。通过SNAP-CUTANA™K-Me…...

我用 Laf 开发了一个非常好用的密码管理工具
【KeePass 密码管理】是一款简单、安全简洁的账号密码管理工具,服务端使用 Laf 云开发,支持指纹验证、FaceID,N 重安全保障,可以随时随地记录我的账号和密码。 写这个小程序之前,在国内市场找了很多密码存储类的 App …...

windows项目部署
文章目录 一、项目部署1.1 先准备好文件1.2安装jdk1.3 配置环境1.4 安装tomcat1.5 MySQL安装本机测试的话:远程连接测试 1.6 项目部署 一、项目部署 1.1 先准备好文件 1.2安装jdk 下一步 下一步 下一步 1.3 配置环境 变量名:JAVA_HOME 变量值:jdk的…...

http首部
1. htttp 报文首部 报文结构为:首部 空行(CRLF)主体 在请求中 http报文首部由请求方法,URI,http版本,首部字段等构成 在响应中:状态码,http版本,首部字段3部分构成 2…...

2024.1.8 Day04_SparkCore_homeWork
目录 1. 简述Spark持久化中缓存和checkpoint检查点的区别 2 . 如何使用缓存和检查点? 3 . 代码题 浏览器Nginx案例 先进行数据清洗,做后续需求用 1、需求一:点击最多的前10个网站域名 2、需求二:用户最喜欢点击的页面排序TOP10 3、需求三&#x…...

09.简单工厂模式与工厂方法模式
道生一,一生二,二生三,三生万物。——《道德经》 最近小米新车亮相的消息可以说引起了不小的轰动,我们在感慨SU7充满土豪气息的保时捷设计的同时,也深深的被本土品牌的野心和干劲所鼓舞。 今天我们就接着这个背景&…...

DHCP,怎么在Linux和Windows中获得ip
一、DHCP 1.1 什么是dhcp DHCP动态主机配置协议,通常被应用在大型的局域网络环境中,主要作用是集中地管理、分配IP地址,使网络环境中的主机动态的获得IP地址、DNS服务器地址等信息,并能够提升地址的使用率。 DHCP作为用应用层协…...

读写锁(arm)
参考文章读写锁 - ARM汇编同步机制实例(四)_汇编 prefetchw-CSDN博客 读写锁允许多个执行流并发访问临界区。但是写访问是独占的。适用于读多写少的场景 另外好像有些还区分了读优先和写优先 读写锁定义 typedef struct {arch_rwlock_t raw_lock; #if…...

【第33例】IPD体系进阶:市场细分
目录 内容简介 市场细分原因 市场细分主要活动 市场细分流程 作者简介 内容简介 这节内容主要来谈谈 IPD 市场管理篇的市场细分步骤。 其中,市场管理(Market Management)是一套系统的方法。 用于对广泛的机会进行选择性收缩,...

response 拦截器返回的二进制文档(同步下载excel)如何配置
response 拦截器返回的二进制文档(同步下载excel)如何配置 一、返回效果图二、response如何配置 一、返回效果图 二、response如何配置 service.interceptors.response.use(response > {// 导出excel接口if (response.config.isExport) {return resp…...

为什么要使用云原生数据库?云原生数据库具体有哪些功能?
相比于托管型关系型数据库,云原生数据库极大地提高了MySQL数据库的上限能力,是云数据库划代的产品;云原生数据库最早的产品是AWS的 Aurora。AWS Aurora提出来的 The log is the database的理念,实现存储计算分离,把大量…...

05- OpenCV:图像操作和图像混合
目录 一、图像操作 1、读写图像 2、读写像素 3、修改像素值 4、Vec3b与Vec3F 5、相关的代码演示 二、图像混合 1、理论-线性混合操作 2、相关API(addWeighted) 3、代码演示(完整的例子) 一、图像操作 1、读写图像 (1)…...

人脸识别(Java实现的)
虹软人脸识别: 虹软人脸识别的地址:虹软视觉开放平台—以免费人脸识别技术为核心的人脸识别算法开放平台 依赖包: 依赖包是从虹软开发平台下载的 在项目中引入这个依赖包 pom.xml <!-- 人脸识别 --><dependency><gr…...

Maven 依赖管理项目构建工具 教程
Maven依赖管理项目构建工具 此文档为 尚硅谷 B站maven视频学习文档,由官方文档搬运而来,仅用来当作学习笔记用途,侵删。 另:原maven教程短而精,值得推荐,下附教程链接。 atguigu 23年Maven教程 目录 文章目…...

供应链+低代码,实现数字化【共赢链】转型新策略
在深入探讨之前,让我们首先明确供应链的基本定义。供应链可以被理解为一个由采购、生产、物流配送等环节组成的网状系统,它始于原材料的采购,经过生产加工,最终通过分销和零售环节到达消费者手中。 而数字化供应链,则是…...

[力扣 Hot100]Day3 最长连续序列
题目描述 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 出处 思路 此题可用带排序的哈希表,先构建哈希表࿰…...

【办公技巧】Word功能区灰色显示不能编辑,怎么破?
Word文档可以设置加密来保护文件禁止修改,但是在word文档中设置限制编辑功能时对它的作用是否有详细的了解呢?今天为大家介绍word限制编辑功能的作用以及忘记了限制编辑密码该如何解决。 设置限制大家应该都清楚,就是点击工具栏中的审阅 – …...

全志V853开发板原理图
本章节将对开发板几个主要的部件的原理图进行说明,方便快速上手开发板的硬件资料。 开发板硬件框图如下: 模块介绍 GPIO 分配 此表格为 V853 部分重要的 GPIO 的分配表,> 表示对IO的另外一个复用,完整的 GPIO 分配请参阅原理…...

【解决】Unity Project 面板资源显示丢失的异常问题处理
开发平台:Unity 2021.3.7f1c1 一、问题描述 在开发过程中,遭遇 Project 面板资源显示丢失、不全的问题。但 Unity Console 并未发出错误提示。 二、解决方案:删除 Library 目录 前往 “工程目录/Library” 删除内部所有文件并重打开该…...

Hyperledger Fabric Docker 方式多机部署生产网络
规划网络拓扑 3 个 orderer 节点;组织 org1 , org1 下有两个 peer 节点, peer0 和 peer1; 组织 org2 , org2 下有两个 peer 节点, peer0 和 peer1; 因为我只有 3 台虚拟机资源所以没法实现完全的多机部署,资源使用规划如下&#…...

高效降压控制器FP7132XR:为高亮度LED提供稳定可靠的电源
目录 一. FP7132概述 二. 驱动电路:FP7132 三. FP7132应用 高亮度LED作为新一代照明技术的代表,已经广泛应用于各种领域。然而,高亮度LED的工作电压较低,需要一个高效降压控制器来为其提供稳定可靠的电源。在众多降压控制器…...