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

玩转 Python:多线程、装饰器、视觉检测与正则匹配实战

Python 作为一门简洁又强大的编程语言在多线程编程、函数增强、计算机视觉、文本处理等多个领域都有着广泛的应用。本文将结合几个实用的代码案例带你上手 Python 的多线程、装饰器、OpenCV 颜色检测和正则表达式匹配从基础应用到实际场景解锁 Python 的多样玩法。一、多线程编程让程序 “并行” 起来在 Python 中threading库是实现多线程的核心工具它能让程序在执行耗时操作时不阻塞主线程提升运行效率。1. 基础多线程示例先看一个简单的多线程执行函数的例子import threading import time def worker(): print(线程开始执行) for i in range(5): print(f线程正在工作 {i}) print(线程执行完毕) thread threading.Thread(targetworker) thread.start() print(****主线程继续执行****) def worker(name): print(f{name} 线程开始执行) for i in range(5): print(f{name} 正在工作: {i}) time.sleep(0.5) print(f{name} 线程执行完毕) thread1 threading.Thread(targetworker, args(线程1,)) thread2 threading.Thread(targetworker, args(线程2,)) thread1.start() thread2.start() print(****主线继续执行****)运行这段代码你会发现 “线程 1” 和 “线程 2” 交替输出内容主线程也不会等待子线程完成才执行后续代码这就是多线程的 “并行” 特性 —— 多个线程在 CPU 中交替执行看起来像是同时运行。2. 多线程执行不同耗时任务我们还可以让不同线程执行不同耗时的任务比如模拟 “等待不同时间后输出结果”def run(t): time.sleep(t) print(f我等了{t}秒) t1 threading.Thread(targetrun, args(3,)) t2 threading.Thread(targetrun, args(6,)) t1.start() print(开始计时) t2.start()执行后主线程先打印 “开始计时”3 秒后t1线程输出 “我等了 3 秒”6 秒后t2线程输出 “我等了 6 秒”完美体现了多线程处理异步任务的优势。二、装饰器给函数 “加 buff”装饰器是 Python 的语法糖能在不修改函数源码的前提下为函数增加额外功能。比如实现 “每调用 N 次函数执行指定操作” 的需求。1. 自定义装饰器示例下面的装饰器execute_after_n_calls能实现 “每调用 3 次被装饰函数就执行一次指定函数”import re def execute_after_n_calls(n, w2set): def decorator(func): def wrapper(*args, **kwargs): # 统计函数调用次数 wrapper.count 1 # 执行原函数并获取结果 result func(*args, **kwargs) # 每调用n次执行w2set函数 if wrapper.count % n 0: w2set() return result # 初始化调用次数 wrapper.count 0 return wrapper return decorator # 被触发的函数 def bb(): print(b) # 用装饰器增强aa函数 execute_after_n_calls(3, bb) def aa(): print(a) # 测试调用 for _ in range(6): aa()运行结果会依次输出a a a b a a a b。装饰器通过闭包特性巧妙地统计函数调用次数实现了函数功能的扩展这种方式在日志记录、性能统计、权限校验等场景中非常实用。三、OpenCV 实战颜色检测识别牛皮纸箱利用 OpenCV 和 NumPy我们可以实现基于颜色的物体检测比如识别摄像头画面中的牛皮纸箱通过匹配棕色色域。1. 颜色检测核心代码import cv2 import numpy as np # 打开摄像头 cap cv2.VideoCapture(0) while True: try: # 读取帧 ret, frame3 cap.read() # 转换为HSV色彩空间更适合颜色检测 hsv_image cv2.cvtColor(frame3, cv2.COLOR_BGR2HSV) # 定义棕色的HSV范围 lower_brown np.array([10, 30, 30]) upper_brown np.array([30, 255, 255]) # 创建掩码只保留棕色区域 mask cv2.inRange(hsv_image, lower_brown, upper_brown) # 计算棕色像素占比 white_pixels np.sum(mask 255) total_pixels mask.shape[0] * mask.shape[1] color_percentage (white_pixels / total_pixels) * 100 # 占比≥20%时判定为检测到牛皮纸箱 if color_percentage 20: print(检测到牛皮纸箱) # 显示画面 cv2.imshow(mask, mask) cv2.imshow(Filtered Image1, frame3) # 按ESC退出 if cv2.waitKey(1) 27: break except: pass # 释放资源 cap.release() cv2.destroyAllWindows()2. 关键知识点HSV 色彩空间相比 RGBHSV 更能抵抗光照变化的影响是颜色检测的首选掩码mask通过cv2.inRange筛选出指定颜色范围的像素白色255为匹配区域黑色0为不匹配像素占比计算通过统计匹配像素的数量判断画面中目标颜色的占比实现物体识别。四、正则表达式精准匹配文本内容正则表达式是处理文本的 “利器”能快速筛选出符合规则的字符串比如匹配特定格式的编号、密码等。1. 多规则文本匹配示例下面的代码实现了两种规则的字符串匹配① 包含字母 数字长度 2-8 且可含连字符② 4-7 位纯数字。import re def process_string(input_string): aa [] parts input_string.split() # 规则1含字母数字长度2-8可含- pattern_alphanumeric re.compile(r^(?.*[a-zA-Z])(?.*\d)[a-zA-Z\d-]{2,8}$) # 规则24-7位纯数字 pattern_at_least_two_digits re.compile(r^\d{4,7}$) for part in parts: if pattern_alphanumeric.match(part) or pattern_at_least_two_digits.match(part): aa.append(part) return aa # 测试用例 test_list [Aceite p04476, sdighsg, s4967xl, v0-4985, 123, 1234568956, 45825] result [] for s in test_list: result.extend(process_string(s)) print(匹配结果, result)运行结果会输出[p04476, s4967xl, v0-4985, 45825]精准筛选出符合规则的字符串。正则表达式的优势在于灵活定义匹配规则在数据清洗、文本解析、表单验证等场景中必不可少。五、总结本文从四个不同的维度展示了 Python 的实战应用多线程利用threading实现并行任务提升程序执行效率装饰器通过闭包扩展函数功能让代码更简洁、易维护OpenCV 颜色检测结合 HSV 色彩空间实现物体识别落地计算机视觉小应用正则表达式精准匹配文本规则高效处理文本数据。Python 的魅力在于其丰富的库和灵活的语法这些基础实战案例不仅能帮助你掌握核心知识点也能为后续的复杂项目打下基础。不妨动手运行代码尝试修改参数和规则探索更多 Python 的玩法吧

相关文章:

玩转 Python:多线程、装饰器、视觉检测与正则匹配实战

Python 作为一门简洁又强大的编程语言,在多线程编程、函数增强、计算机视觉、文本处理等多个领域都有着广泛的应用。本文将结合几个实用的代码案例,带你上手 Python 的多线程、装饰器、OpenCV 颜色检测和正则表达式匹配,从基础应用到实际场景…...

基于Python与LLM API构建轻量级命令行问答工具

1. 项目概述:一个轻量级命令行问答工具最近在折腾一些自动化脚本,经常需要在终端里快速查询一些信息,比如某个命令的用法、一个概念的简单解释,或者把一段代码从Python翻译成Go。每次都打开浏览器、切换标签页、输入关键词&#x…...

ARM RealView Debugger多项目管理与调试实战

1. ARM RealView Debugger多项目管理实战解析在嵌入式开发领域,高效管理多个关联项目是提升开发效率的关键。ARM RealView Debugger(以下简称RVD)通过容器项目(Container Project)机制,为开发者提供了强大的…...

AudioMoth Dev开发板:全频谱声学监测与生物声学研究利器

1. AudioMoth Dev开发板深度解析AudioMoth Dev是一款基于Silicon Labs EFM32 Wonder Gecko MCU的全频谱声学开发板,专为野外声学监测和生物声学研究设计。作为AudioMoth设备的开发版本,它保留了核心音频采集功能的同时,提供了更丰富的硬件接口…...

HarmonyOS APP开发之玩透 postCardAction 的三大通信心法

玩透 postCardAction 的三大通信心法做鸿蒙 UI 开发的兄弟,只要碰过服务卡片(Service Widget),多半都经历过这样一种“血压飙升”的时刻:产品经理想要在卡片上做一个简单的按钮交互,你顺手写了个点击事件&a…...

科学AI智能体的强化学习训练与应用实践

1. 科学智能体训练概述科研工作往往充斥着大量重复性劳动——文献查阅、实验流程管理、多模态数据处理等机械性工作占据了研究者大量时间。科学AI智能体的出现,正在改变这一现状。这类智能体能够承担文献综述、假设生成、实验规划、计算任务提交、实验室操作协调、结…...

ComfyUI Impact Pack完整安装指南:3步解决节点缺失问题

ComfyUI Impact Pack完整安装指南:3步解决节点缺失问题 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址: https:/…...

农业数据主权危机:MCP 2026要求实时上传作业轨迹、油耗、工况等137个字段——你的ISOBUS网关真的合规吗?

更多请点击: https://intelliparadigm.com 第一章:农业数据主权危机的本质与MCP 2026立法动因 农业数据主权危机并非技术失灵的表象,而是全球粮食价值链中权力结构失衡的深层投射。当跨国农企平台通过IoT传感器、卫星遥感和农机API持续采集田…...

沙箱隔离失效的11个隐性信号,第8个已在金融客户生产环境触发RCE——MCP 2026隔离健康度自检清单

更多请点击: https://intelliparadigm.com 第一章:MCP 2026沙箱隔离失效的底层机理与威胁图谱 MCP 2026 是一种面向多租户云原生环境的轻量级容器化策略执行框架,其沙箱设计依赖于 Linux cgroups v2、user namespace 嵌套及 seccomp-bpf 策略…...

【U-Net 数据集制作】如何制作自己的图像分割数据集?(标注与格式转换),图像分割数据集制作与转换神器

前言 在前面的课程中,我们像搭积木一样手写了 U-Net 的网络架构。很多同学迫不及待地想把自己的图片喂进网络开始“炼丹”。但是,深度学习界有一句名言:“数据决定了模型的上限,而网络结构只是在逼近这个上限。” 在实际项目中,做数据准备往往比写网络更让人崩溃: 用标…...

贝叶斯网络原理与应用实战指南

1. 贝叶斯信念网络入门指南第一次接触贝叶斯网络时,我被那些复杂的箭头和条件概率表搞得晕头转向。直到有一次在医疗诊断项目中,我才真正理解这种概率图模型的强大之处——它能够直观地表达变量间的依赖关系,处理不确定性问题。本文将带您从零…...

Diffusers库实现AI图像修复与扩展的实战指南

1. 使用Diffusers库进行图像修复与扩展的完整指南在数字图像处理领域,图像修复(Inpainting)和图像扩展(Outpainting)是两项极具实用价值的技术。作为一名长期使用Stable Diffusion的开发者,我发现Hugging Face的Diffusers库为这些任务提供了强大的工具链…...

基于多智能体与RAG的DeepResearchAgent:AI驱动的自动化文献综述实践

1. 项目概述:一个能帮你“读论文”的智能研究助手最近在折腾AI Agent领域,发现了一个挺有意思的开源项目——SkyworkAI的DeepResearchAgent。简单来说,这玩意儿就是一个能帮你做深度文献调研的智能体。想象一下,你拿到一个全新的研…...

豆包AI与DeepSeek的区别

豆包AI和DeepSeek都是当前流行的中文大型语言模型(LLM)助手,但它们由不同公司开发,在背景、功能、性能和适用场景上存在差异。1. 开发者背景与起源豆包AI:由字节跳动公司(抖音、今日头条的母公司&#xff0…...

HTML头部元信息避坑指南技术文章大纲

HTML头部元信息避坑指南技术文章大纲核心元标签的常见错误与正确用法<meta charset>未声明或声明位置错误导致乱码 <title>过长或重复影响SEO与用户体验 <meta name"viewport">缺失导致移动端适配问题 <meta http-equiv>误用引发兼容性问题S…...

离婚案件数据分析系统设计:基于玉溪案例的抚养权判决预测模型

一、技术背景与问题定义作为一名在玉溪从事法律科技工作的从业者&#xff0c;我这些年一直在思考一个问题&#xff1a;抚养权判决的结果能不能被预测&#xff1f;说实话&#xff0c;传统上大家觉得这是不可能的——毕竟法官要综合考量那么多因素&#xff1a;孩子的意愿、父母双…...

数据科学实战:OSEMN框架详解与案例分析

1. 数据科学家如何系统化解决问题&#xff1a;OSEMN框架详解 作为一名从业多年的数据科学顾问&#xff0c;我经常被问到"数据科学家到底如何思考问题"。事实上&#xff0c;这个领域最宝贵的不是掌握多少算法&#xff0c;而是系统化解决问题的框架思维。今天我要分享的…...

信息熵:从概念到机器学习应用的全面解析

1. 信息熵的概念起源与核心定义信息熵这个概念最早由克劳德香农在1948年的论文《通信的数学理论》中提出&#xff0c;当时是为了解决通信系统中的信息量化问题。但有趣的是&#xff0c;这个概念其实脱胎于物理学中的热力学熵。香农在思考如何度量信息时&#xff0c;向著名数学家…...

Arduino与VL53L0X激光测距传感器开发指南

1. 项目概述&#xff1a;基于Arduino的ToF激光测距传感器应用开发激光测距技术在现代智能设备中扮演着越来越重要的角色。作为该技术的代表产品&#xff0c;ST VL53L0X ToF传感器凭借其毫米级精度、2米测距范围和940nm不可见激光等特性&#xff0c;被广泛应用于机器人避障、工业…...

stm32f103zet6使用STM32CubeMx移植原子fsmc(有讲解)

本次使用原子stm32f103zet64.3寸mcu屏&#xff0c;学了原子的例程发现虽然是hal库开发但是并没有使用stm32cubemx开发而是纯库函数&#xff0c;我之前的工程都是基于cubemx所以我想进行适配&#xff0c;现在把移植过程罗列如下&#xff0c;有问题可以评论区问我&#xff0c;stm…...

网络故障定位工具怎么搭配:Wireshark、tcpdump、监控平台各自该在什么时候上场?

网络故障定位工具怎么搭配&#xff1a;Wireshark、tcpdump、监控平台各自该在什么时候上场&#xff1f; 很多团队的网络排障效率低&#xff0c;不是因为没人干活&#xff0c;而是因为工具顺序用反了&#xff1a;明明问题还在“先确认范围”的阶段&#xff0c;就急着抓全量包&am…...

10华夏之光永存:盘古大模型开源登顶世界顶级——全系列终章总结与未来使命(第十篇)

10华夏之光永存&#xff1a;盘古大模型开源登顶世界顶级——全系列终章总结与未来使命&#xff08;第十篇&#xff09; 标签&#xff1a;#华为盘古 #终章总结 #国产AI自立自强 #华夏本源AI #世界顶级大模型开源全闭环 免责声明 本文为盘古大模型十篇系列开源连载最终篇、第十篇…...

TensorFlow.data API高效数据管道构建与优化实战

1. 理解TensorFlow.data API的核心价值第一次接触TensorFlow.data API时&#xff0c;我正面临一个图像分类项目的性能瓶颈。传统的数据加载方式导致GPU利用率长期低于30%&#xff0c;直到发现这个被低估的工具包。TensorFlow.data不是简单的数据读取接口&#xff0c;而是构建高…...

【限时开放】Docker AI Toolkit 2026企业版Beta通道关闭倒计时:3天内未注册将永久失去GPU调度优先权与联邦学习插件

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Docker AI Toolkit 2026企业版Beta通道关闭前的关键认知 Docker AI Toolkit 2026企业版Beta通道将于2024年11月30日23:59&#xff08;UTC8&#xff09;正式终止注册与镜像拉取权限。所有未完成许可证绑…...

仿真一:与门运算

一、题目 用 Multisim 来仿真一个三输入与门&#xff0c;与门的输入波形为二进制数从 0∼70\sim70∼7 循环。 二、仿真内容 利用 Multisim 中的字生成器&#xff08;可从右侧快捷栏找到&#xff09;&#xff0c;来输入波形为二进制从 0∼70\sim70∼7 的循环。双击字发生器即可进…...

刚开始做 GEO:最容易做错的动作与起步误区拆解

GEO 起步阶段&#xff0c;不建议先按“发多少内容、测多少平台、截多少图”做验收。 更合适的第一轮目标是&#xff1a;固定一批真实问题&#xff0c;检查公开材料能不能被 AI 正确组织成回答。讲不准&#xff0c;先修材料&#xff1b;讲得泛&#xff0c;先补边界&#xff1b;讲…...

基于Golang的全流式AI语音后端:为智能硬件打造低延迟对话系统

1. 项目概述&#xff1a;一个为智能硬件量身打造的全流式AI语音后端 如果你正在折腾ESP32、树莓派这类物联网设备&#xff0c;想给它加上一个能听会说、还能“思考”的AI大脑&#xff0c;那你很可能已经踩过不少坑了。市面上的AI服务要么延迟高得没法实时对话&#xff0c;要么就…...

网球发球动作及发力指导

网球发球动作及发力指导 本文将系统讲解网球发球(Serve)的完整技术动作与发力原理,适用于初中级球员自学或教练教学参考。 目录 发球概述与技术分类 准备姿势与握拍 发球动作四阶段分解 动力链与发力原理 平击、上旋与切削发球 常见错误与纠正方法 针对性训练计划 核心要点总…...

通俗数学3-电和磁

背景 我很不想抄公式&#xff0c;今早看到一个文https://www.zhihu.com/question/21912411/answer/2031438531613209361 把散和旋讲得太好&#xff0c;借着这个电磁的推导&#xff0c;正好正经做一个在微元的电磁数学建模。在光和电合成中https://blog.csdn.net/wjcroom/artic…...

补题记录4

牛客周赛140 &#xff1a;C,D,E,F北华大学第十三届大学生程序设计竞赛(同步赛)&#xff08;重现赛&#xff09;B...