用Python装饰器优雅地为函数计时

简介: 用Python装饰器优雅地为函数计时

用Python装饰器优雅地为函数计时

在Python中,装饰器是一种强大的工具,它允许我们在不修改原函数代码的情况下,为其添加额外功能。今天,我们来探索如何创建一个简单的性能计时装饰器,这在优化代码时非常有用。

import time
import functools

def timer_decorator(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        start_time = time.perf_counter()
        result = func(*args, **kwargs)
        end_time = time.perf_counter()
        print(f"{func.__name__} 执行耗时: {end_time - start_time:.4f}秒")
        return result
    return wrapper

@timer_decorator
def example_function(n):
    """模拟一个耗时操作"""
    sum = 0
    for i in range(n):
        sum += i
    return sum

# 使用装饰后的函数
result = example_function(1000000)

这个装饰器的工作原理很简单:它记录了函数开始和结束的时间,计算并打印出执行耗时。@functools.wraps(func)确保了原始函数的元信息(如函数名、文档字符串)得以保留。

装饰器的优势在于它的可重用性——只需一行@timer_decorator,我们就可以为任何函数添加计时功能,而无需修改其内部逻辑。这种“横切关注点”的分离让代码更加清晰、可维护。

Python的装饰器语法糖让这一切变得优雅而直观。掌握装饰器,不仅能提升代码质量,还能让你写出更Pythonic的程序。

相关文章
|
2月前
|
缓存 API 数据库
Python性能优化利器:lru_cache装饰器详解
Python性能优化利器:lru_cache装饰器详解
|
2月前
|
API 开发者 C++
用Python的FastAPI框架,5分钟搭建高性能API
用Python的FastAPI框架,5分钟搭建高性能API
337 139
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
模型训练篇|多阶段ToolRL打造更可靠的AI导购助手
芝麻租赁推出AI导购“租赁小不懂”,针对长周期、重决策租赁场景,首创“One-Model + Tool-Use”架构与两阶段强化学习,攻克需求难匹配、决策效率低、服务被动三大痛点,实现响应提速78%、推荐成功率提升14.93%,打造贴切、沉浸、信任的场景化租赁体验。(239字)
321 25
模型训练篇|多阶段ToolRL打造更可靠的AI导购助手
|
3月前
|
人工智能 关系型数据库 Serverless
2 天,用函数计算 AgentRun 爆改一副赛博朋克眼镜
2 天将吃灰的 Meta 眼镜改造成“交警Copilot”:通过阿里云函数计算 AgentRun 实现端-管-云协同,利用 Prompt 驱动交通规则判断,结合 OCR 与数据库查询,打造可动态扩展的智能执法原型,展现 Agent 架构在真实场景中的灵活与高效。
464 45
|
3月前
|
存储 缓存 算法
SGLang Hierarchical Sparse Attention 技术深度解析
阿里云 Tair 联合 SGLang 推出分层稀疏化框架,通过“稀疏+分层”协同优化,将 KVCache 从 GPU 显存扩展至 CPU 与远端存储,实现计算与存储效率双突破,为百万级超长上下文推理提供新路径。
|
2月前
|
存储 安全 网络安全
2026年OpenClaw(Clawdbot)小白部署教程及服务器安全配置指南
OpenClaw(原Clawdbot)作为阿里云生态下的轻量级AI自动化代理工具,2026年版本在便捷部署的同时,也对服务器安全提出了更高要求——尤其是对接第三方平台、处理敏感业务数据时,服务器的权限管控、数据加密、网络防护直接决定使用安全。本文将先完整拆解阿里云OpenClaw一键部署的全流程,再从网络防护、权限管控、数据安全、日志审计四大维度,给出可落地的服务器安全配置方案,包含实操代码命令与安全加固技巧,兼顾部署便捷性与使用安全性。
2658 4
|
3月前
|
人工智能 自然语言处理 运维
阿里开源 Assistant Agent,助力企业快速构建答疑、诊断智能助手
一款快速构建智能客服、诊断助手、运维助手、AIOps 的开源框架。
1221 75
|
3月前
|
XML 前端开发 Serverless
自建一个 Agent 很难吗?一语道破,万语难明
本文分享了在奥德赛TQL研发平台中集成BFF Agent的完整实践:基于LangGraph构建状态图,采用Iframe嵌入、Faas托管与Next.js+React框架;通过XML提示词优化、结构化知识库(RAG+DeepWiki)、工具链白名单及上下文压缩(保留近3轮对话)等策略,显著提升TQL脚本生成质量与稳定性。
977 33
自建一个 Agent 很难吗?一语道破,万语难明
|
3月前
|
人工智能 Java Nacos
构建开放智能体生态:AgentScope 如何用 A2A 协议与 Nacos 打通协作壁垒?
AgentScope 全面支持 A2A 协议和 Nacos 智能体注册中心,实现跨语言跨框架智能体互通。
1365 79

热门文章

最新文章