python: Timing Functions Pattern

📅 2026/7/3 22:17:16 👁️ 阅读次数 📝 编程学习
python: Timing Functions Pattern

项目结构:

一个珠宝企业业务系统性能监控的实现方案。通过Python装饰器模式设计计时函数(timing_decorator),自动记录各业务模块执行耗时,并支持慢任务告警(阈值1秒)。系统包含供应链、设计、生产、质检、物流、财务、营销、销售、人事、IT等10个业务模块,采用统一日志配置,记录执行时间到business_perf.log文件。当业务函数执行超过阈值时输出警告日志,有效监控珠宝产销全流程性能。该方案实现无侵入式性能分析,适用于企业级业务系统监控场景,帮助识别优化慢业务环节。

# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 20:55 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : settings.py import os # 日志配置 LOG_LEVEL = "INFO" LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s" LOG_DATE_FMT = "%Y-%m-%d %H:%M:%S" LOG_SAVE_PATH = os.path.join(os.getcwd(), "logs") # 性能监控配置 PERF_LOG_PREFIX = "【珠宝性能监控】" PERF_TIME_THRESHOLD = 1.0 # 超过1秒标记慢查询/慢业务 # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 20:53 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : logger.py import logging import os from TimingFunctionsPattern.config.settings import LOG_LEVEL, LOG_FORMAT, LOG_DATE_FMT, LOG_SAVE_PATH def init_global_logger(): """ 全局日志初始化,统一日志输出规则" :return: """ # 创建日志目录 if not os.path.exists(LOG_SAVE_PATH): os.makedirs(LOG_SAVE_PATH) logging.basicConfig( level=getattr(logging, LOG_LEVEL), format=LOG_FORMAT, datefmt=LOG_DATE_FMT, handlers=[ logging.FileHandler(os.path.join(LOG_SAVE_PATH, "business_perf.log"), encoding="utf-8"), logging.StreamHandler() ] ) return logging.getLogger("jewelry_global_logger") # 全局日志实例 logger = init_global_logger() # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 20:57 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : timing_profiler.py import time import functools from TimingFunctionsPattern.core.logger import logger from TimingFunctionsPattern.config.settings import PERF_LOG_PREFIX, PERF_TIME_THRESHOLD def timing_decorator(func): """ Profiling Pattern - Timing Functions 标准实现 无侵入式包装任意函数,自动记录执行耗时,支持慢任务告警 """ @functools.wraps(func) def wrapper(*args, **kwargs): start = time.perf_counter() try: result = func(*args, **kwargs) finally: end = time.perf_counter() cost = round(end - start, 4) msg = f"{PERF_LOG_PREFIX} 业务函数[{func.__name__}] 执行耗时: {cost} 秒" # 区分普通日志 / 慢任务警告 if cost >= PERF_TIME_THRESHOLD: logger.warning(f"{msg} 【慢任务告警】耗时超过阈值{PERF_TIME_THRESHOLD}s") else: logger.info(msg) return result return wrapper
# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 20:59 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : supply.py import time from TimingFunctionsPattern.core.timing_profiler import timing_decorator @timing_decorator def material_purchase_check(): """ 上游供应链:黄金、钻石、宝石采购入库、品级真伪核验 :return: """ time.sleep(1.2) print("✅ 原料采购核验完成:黄金99.99纯度、钻石4C质检达标,入库登记") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 21:00 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : design.py import time from TimingFunctionsPattern.core.timing_profiler import timing_decorator @timing_decorator def jewelry_draft(): """ 设计部:首饰3D建模、手绘图纸、生产工艺图输出 :return: """ time.sleep(0.8) print("✅ 设计制图完成:新款首饰3D模型渲染完毕,图纸下发车间") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 21:01 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : production.py import time from TimingFunctionsPattern.core.timing_profiler import timing_decorator @timing_decorator def produce_jewelry(): """ 生产车间:切割、镶嵌、抛光、成型加工 :return: """ time.sleep(2.5) print("✅ 加工生产完成:首饰毛坯镶嵌抛光完成,转入质检") @timing_decorator def quality_inspect(): """ 成品质检:工艺瑕疵、贵金属称重、合规检测 :return: """ time.sleep(0.6) print("✅ 质检完成:无工艺缺陷,出具质检合格证书") @timing_decorator def product_pack(): """ 成品包装:礼盒、防伪标签、产品证书封装 :return: """ time.sleep(0.3) print("✅ 包装完成:高端礼盒封装,绑定唯一防伪码") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 21:02 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : logistics.py import time from TimingFunctionsPattern.core.timing_profiler import timing_decorator @timing_decorator def goods_delivery(): """ 物流仓储:保价出库、物流面单、运输跟踪 :return: """ time.sleep(1.0) print("✅ 物流完成:首饰保价出库,物流单号已同步系统") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 21:03 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : finance.py import time from TimingFunctionsPattern.core.timing_profiler import timing_decorator @timing_decorator def finance_calc_stat(): """ 财务部:原料成本核算、订单营收、发票、月度报表 :return: """ time.sleep(1.8) print("✅ 财务核算完成:生产成本与销售营收统计报表生成") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 21:05 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : marketing.py import time from TimingFunctionsPattern.core.timing_profiler import timing_decorator @timing_decorator def marketing_promotion(): """ 市场部:线上投放、线下展会、品牌活动策划 :return: """ time.sleep(1.5) print("✅ 营销推广完成:节日活动方案落地,广告投放上线") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 21:05 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : sales.py import time from TimingFunctionsPattern.core.timing_profiler import timing_decorator @timing_decorator def sales_customer_service(): """ 销售业务:客户洽谈、订单录入、售后维修、渠道合作 :return: """ time.sleep(0.9) print("✅ 销售业务完成:客户订单确认,售后工单归档") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 21:06 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : hr_admin.py import time from TimingFunctionsPattern.core.timing_profiler import timing_decorator @timing_decorator def hr_admin_work(): """ 人事行政:考勤、招聘、办公用品、制度管理 :return: """ time.sleep(0.7) print("✅ 人事行政完成:月度考勤统计,行政物资盘点") # encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 21:07 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : it_ops.py import time from TimingFunctionsPattern.core.timing_profiler import timing_decorator @timing_decorator def it_system_ops(): """ IT运维:业务系统巡检、数据备份、网络安全、版本更新 :return: """ time.sleep(1.1) print("✅ IT运维完成:全业务数据库备份,服务器巡检正常")
# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 21:09 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : business_flow_service.py from TimingFunctionsPattern.business import ( material_purchase_check, jewelry_draft, produce_jewelry, quality_inspect, product_pack, goods_delivery, finance_calc_stat, marketing_promotion, sales_customer_service, hr_admin_work, it_system_ops ) class JewelryBusinessFlowService: """ 珠宝全业务流程编排服务 职责:按真实行业顺序串联全链路业务,对外统一提供流程入口 """ def run_full_production_flow(self): """完整产销全链路:原料→设计→生产→质检→包装→物流""" print("======= 启动珠宝产销主流程 =======\n") material_purchase_check() jewelry_draft() produce_jewelry() quality_inspect() product_pack() goods_delivery() print("\n======= 产销主流程执行结束 =======\n") def run_backend_support_flow(self): """后台支撑流程:财务、营销、销售、人事、IT""" print("======= 启动后台职能支撑流程 =======\n") finance_calc_stat() marketing_promotion() sales_customer_service() hr_admin_work() it_system_ops() print("\n======= 后台支撑流程执行结束 =======\n") def run_all_business(self): """一次性执行全公司所有业务模块""" self.run_full_production_flow() self.run_backend_support_flow()

调用:

# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ ® # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:Timing Functions Pattern 计时函数模式 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2024.3.6 python 3.11 # os : windows 10 # database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j # Datetime : 2026/7/3 21:11 # User : geovindu # Product : PyCharm # Project : pydesginpattern # File : TimingFunctionsBll.py from TimingFunctionsPattern.service import JewelryBusinessFlowService from TimingFunctionsPattern.core.logger import logger class TimingFunctionsBll(object): """ """ def demo(self): """ :return: """ logger.info("===== 珠宝企业性能监控系统启动 =====") flow_service = JewelryBusinessFlowService() # 执行全业务流程 flow_service.run_all_business() logger.info("===== 所有业务流程执行完毕 =====")

输出: