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

需求:实现一个可以统计代码的运行时间

需求:有一个做加法计算的函数,要统计执行这个加法函数代码运行了多久

import timedef add(a, b):time.sleep(1)return a + bst = time.time()
add(100, 200)
et = time.time()
print("该函数运行时间为:", et - st)

学了闭包+装饰器后:

import time#  通过函数实现装饰器
def count_time(func):def wrapper(*args, **kwargs):st = time.time()res = func(*args, **kwargs)et = time.time()print("该函数运行时间为:", et - st)return resreturn wrapper@count_time
def add(a, b):time.sleep(1)return a + bprint(add(200, 300))

又学了魔术方法后:

import time# 通过类实现装饰器
class CountTime:def __init__(self, func):self.func = funcdef __call__(self, *args, **kwargs):st = time.time()res = self.func(*args, **kwargs)et = time.time()print("该函数运行时间为:", et - st)return res@CountTime  # add = CountTime(add)
def add(a, b):time.sleep(1)return a + bprint(add(200, 300))

需求升级:

装饰器接收一个int类型的参数n,可以用来装饰任何函数,如果函数运行时间大于n,则

打印“请耐心等待,马上回来”和统计函数的运行时间

# 通过函数实现装饰器
import timedef count_time_1(n):def count_time(func):def wrapper(*args, **kwargs):st = time.time()res = func(*args, **kwargs)et = time.time()print("该函数运行时间为:", et - st)if et - st > n:print("请耐心等待,马上回来")return resreturn wrapperreturn count_time@count_time_1(2)  # add = count_time(2)(add)
def add(a, b):time.sleep(2)return a + bprint(add(200, 300))
# 通过类实现装饰器
class CountTime:def __init__(self, n):self.n = ndef __call__(self, func):def wrapper(*args, **kwargs):st = time.time()res = func(*args, **kwargs)et = time.time()print("该函数运行时间为:", et - st)if et - st > self.n:print(f"运行时间超过{self.n}s,请耐心等待,马上回来")return resreturn wrapper@CountTime(1)  # add = CountTime(1)(add)
def add(a, b):time.sleep(1)return a + bprint(add(100, 200))

相关文章:

需求:实现一个可以统计代码的运行时间

需求:有一个做加法计算的函数,要统计执行这个加法函数代码运行了多久 import timedef add(a, b):time.sleep(1)return a bst time.time() add(100, 200) et time.time() print("该函数运行时间为:", et - st) 学了闭包&#x…...

软考高级之redis中使用zset实现延迟队列,你答对了么?

实现延迟队列的思路 zset的特性,带有分数的排序,以时间戳作为分数进行排序 添加任务 zdd取出任务 zrangbyscore执行任务 zrem 定时任务 public static void main(String[] args) {Jedis jedis new Jedis("ip", 6379);TimerTask task new …...

CS 下载安装详解

目录 CS简介: CS下载地址: CS的安装: CS简介: CS为目前渗透中常用的一款工具,它的强大在于控制windows木马,CS主要控制windows木马。 CS下载地址: 链接:https://pan.baidu.com/…...

前端canvas项目实战——在线图文编辑器(十):小地图MiniMap(上)

目录 前言一、 效果展示二、 实现步骤0. 行动前的思考1. 为小地图更新「背景图」2. 为小地图更新「滑动窗口」2.1 获取新的滑动窗口「宽高」2.2 获取新的滑动窗口「位置」3. 为小地图更新「遮罩」后记前言 上一篇博文中,我们引入了「逻辑画布」的概念,让整个工具的页面看起来…...

linux的chmod的数字太难记了,用u, g, o, a更简单!

u, g, o, 和 a是用来设置或查看文件或目录权限在类Unix或Linux系统中的特殊字符,它们分别代表文件或目录的所有者(user)、所属组(group)、其他用户(others)和所有用户(all users)。 而权限方r和w是其中的两种,分别代表读权限(read&#xff0…...

牛客热题:有效括号

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:有效括号题目链接方法一&#x…...

利用SQL语句实现多表联合查询——多表关系介绍

1.多对多查询 先创建一个student表和course表,应该利用外键来实现,通过一个中间表分别对应student和course中的id CREATE TABLE student (id INT unsigned PRIMARY KEY,name VARCHAR(255),no VARCHAR(50) ); CREATE TABLE course (id INT PRIMARY KEY,…...

Java中IO流类的体系

Java为我们提供了多种多样的IO流,我们可以根据不同的功能及性能要求挑选合适的IO流,如图所示,为Java中IO流类的体系。 从上图发现,很多流都是成对出现的,比如: FileInputStream/FileOutputStream&#xff0…...

【调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件】

调试笔记-系列文章目录 调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件 文章目录 调试笔记-系列文章目录调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件 前言一、调试环境操作系统:Ubuntu 22.04.4 LTS编译环境调试目标 二、调…...

GitLab的原理及应用详解(六)

本系列文章简介: 随着软件开发的不断进步和发展,版本控制系统成为了现代软件开发过程中不可或缺的一部分。而GitLab作为其中一种流行的版本控制工具,在软件开发领域享有广泛的应用。GitLab不仅提供了强大的版本控制功能,还集成了项…...

【调和级数】100321. 优质数对的总数 II

本文涉及知识点 调和级数 质数、最大公约数、菲蜀定理 LeetCode100321. 优质数对的总数 II 给你两个整数数组 nums1 和 nums2,长度分别为 n 和 m。同时给你一个正整数 k。 如果 nums1[i] 可以被 nums2[j] * k 整除,则称数对 (i, j) 为 优质数对&#…...

Java SE入门及基础(54) 函数式接口

目录 1. 什么是函数式接口 函数式接口 示例 示例 2. 函数式编程 示例 3. Lambda 表达式延迟执行 应用场景 示例 4. Consumer 接口 解释说明 示例 5. BiConsumer 接口 解释说明 示例 6. Predicate 接口 解释说明 示例 练习 7. Function 接口 解释说明 示例…...

轻松同步:将照片从三星手机传输到iPad的简便方法

概括 想要在新 iPad 上查看三星照片吗?但是,如果您不知道如何将照片从三星手机传输到 iPad,则无法在 iPad 上查看图片。为此,本文分享了 7 个有用的方法,以便您可以使用它们在不同操作系统之间轻松发送照片。现在&…...

MySQL查询某个字段含有字母数字的值

在MySQL中,要查询某个字段含有字母和数字的值,可以使用正则表达式配合REGEXP操作符。以下是一个详细的示例,说明如何编写这样的查询。 假设我们有一个名为my_table的表,其中有一个名为my_column的字段,我们想要查询这…...

通关!游戏设计之道Day14

力量与你同在 所有类型的游戏里,赛车类,解谜类,动作冒险类和射击类你都能找到强化道具。 强化道具 设计强化道具时,设计师应该开动脑筋琢磨下面几个问题 1.强化道具有什么用? 2.他长什么样子,在整个游戏…...

实现一个自定义 hook,用于强制刷新当前组件

写在前面 在 react 中,如果 state 数据发生变化,我们知道,会重新渲染该组件。 但是这个前提是我们需要依赖 state 数据的变化,那比如我们并不想定义 state,又或者说我们的操作不能引起 state 的变化,此时…...

牛客热题:滑动窗口的最大值

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:滑动窗口的最大值题目链接方法一…...

Adobe产品安装目录修改

进入安装包目录&#xff0c;进入到products文件夹 编辑driver.xml文件 将“InstallDir”修改为你需要安装的软件的目录&#xff0c;我这里是修改到D:\Adobe目录 <DriverInfo> <ProductInfo> xxxxxxxxxxxxxxxxx </ProductInfo> 拷贝RequestInfo这部分…...

时间(空间)复杂度(结构篇)

目录 前言&#xff1a; 一、时间复杂度 1.1 时间复杂度的定义 1.2 时间复杂度的分析 表示方法&#xff1a; 1.3 常见的时间复杂度 1.4 时间复杂度的计算以及简单的分析 冒泡排序 折半查找&#xff08;二分查找&#xff09; 斐波那契数列&#xff08;递归&#xff09…...

react记录部署

导语 React中的核心概念 1 虚拟DOM&#xff08;Virtual DOM&#xff09; 2 Diff算法&#xff08;虚拟DOM的加速器&#xff0c;提升React性能的法宝&#xff09; React主要的原理 Virtual DOM 虚拟DOM; 提供了一种不同的而又强大的方式来更新DOM&#xff0c; 代替直接的DOM操…...

Buildroot外部工具链路径解析:从权限问题到正确配置

1. Buildroot外部工具链路径问题解析 第一次用Buildroot配置外部工具链时&#xff0c;我遇到了一个典型的路径解析问题。当时选择的工具链路径是/opt/cross-toolchain/bin/arm-linux-gnueabihf-gcc&#xff0c;编译过程中却报错提示找不到libgcc_s.so。这种问题看似简单&#x…...

常见音视频编码二进制分析笔记(H264,H265,AAC,OPUS,G711A,G711U)

常见音视频编码二进制分析笔记 文章目录常见音视频编码二进制分析笔记视频H.264 (AVC)说明nal_unit_type:nal_ref_idcH.265 (HEVC)音频AAC (Advanced Audio Coding)G.711A (PCMA)G.711U (PCMU)OPUS视频 H.264 (AVC) 标准来源&#xff1a;ITU-T H.264 | ISO/IEC 14496-10 起始…...

别只用AI写脚本了,现在AI打广告可真是城会玩了!

金磊 发自 凹非寺量子位 | 公众号 QbitAI咱就是说啊&#xff0c;现在的广告可真是城会玩了——像下面这个再正常不过的短视频剧情&#xff0c;当镜头切到宝宝喝牛乳的时候&#xff0c;啪的一下&#xff0c;左下角就精准弹出了奶粉广子&#xff1a;以为这是人为提前设置好的&…...

OpenCode问题解决:常见安装配置错误与快速排查方法

OpenCode问题解决&#xff1a;常见安装配置错误与快速排查方法 1. 引言 OpenCode作为一款开源的AI编程助手框架&#xff0c;凭借其终端优先、多模型支持和隐私安全等特性&#xff0c;已经成为开发者社区的热门工具。然而在实际安装和使用过程中&#xff0c;不少开发者会遇到各…...

网盘直链下载助手:八大平台一键获取真实下载地址的终极解决方案

网盘直链下载助手&#xff1a;八大平台一键获取真实下载地址的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云…...

Taskbar11:3个步骤解锁Windows 11任务栏完全自定义能力

Taskbar11&#xff1a;3个步骤解锁Windows 11任务栏完全自定义能力 【免费下载链接】Taskbar11 Change the position and size of the Taskbar in Windows 11 项目地址: https://gitcode.com/gh_mirrors/ta/Taskbar11 你是否厌倦了Windows 11默认的任务栏布局&#xff1…...

# 012、AutoSAR CP基础软件(BSW)模块详解:复杂驱动(CDD)

一、从一次诡异的CAN信号丢失说起 上个月在量产项目上碰到个怪事:ECU休眠唤醒后,某个关键CAN信号偶尔会丢一帧。抓Trace、看DBC、查配置表,忙活两天没定位。最后发现是信号处理函数里有个状态机没在唤醒后复位,而这个函数恰恰放在了一个“自定义驱动模块”里——没错,就是…...

【Python学习】递归算法

目录 一、递归的核心概念 1.1 什么是递归&#xff1f; 1.2 递归的两个核心要素&#xff08;必记&#xff09; 二、Python递归函数的基本语法 2.1 语法结构 2.2 最简单的递归示例&#xff1a;求1到n的和 三、Python递归的经典实例&#xff08;必练&#xff09; 实例1&…...

3个步骤解决老Mac无法升级新系统的困境:OpenCore Legacy Patcher完整指南

3个步骤解决老Mac无法升级新系统的困境&#xff1a;OpenCore Legacy Patcher完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 想象一下&#xff0c;你…...

OpenClaw技能开发指南:为Qwen3-32B定制私有化数据处理模块

OpenClaw技能开发指南&#xff1a;为Qwen3-32B定制私有化数据处理模块 1. 为什么需要定制技能&#xff1f; 去年我接手了一个数据清洗项目&#xff0c;需要处理上千份格式混乱的CSV文件。当我尝试用传统脚本处理时&#xff0c;发现每个文件的结构差异导致规则引擎越来越臃肿。…...