Python笔记12-多线程、网络编程、正则表达式
文章目录
- 多线程
- 网络编程
- 正则表达式
多线程
现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。
进程: 就是一个程序,运行在系统之上,那么便称之这个程序为一个运行进程,并分配进程ID方便系统管理。
线程:线程是归属于进程的,一个进程可以开启多个线程,执行不同的工作,是进程的实际工作最小单位。
进程之间是内存隔离的, 即不同的进程拥有各自的内存空间。
线程之间是内存共享的,线程是属于进程的,一个进程内的多个线程之间是共享这个进程所拥有的内存空间的。
并行执行
并行执行的意思指的是同一时间做不同的工作。
进程之间就是并行执行的,操作系统可以同时运行好多程序,这些程序都是在并行执行。
线程其实也是可以并行执行的。比如一个Python程序,其实是完全可以做到:同一时间做两件乃至多件不同的事情
多线程编程
绝大多数编程语言,都允许多线程编程,Pyhton也不例外。
Python的多线程可以通过threading模块来实现。
使用语法
import threading
thread_obj = threading.Thread([group [, target [, name [, args [, kwargs]]]]]) #创建线程
group: 暂时无用,未来功能的预留参数
target: 执行的目标任务名 比如某一个方法
args: 以元组的方式给执行任务传参
kwargs: 以字典方式给执行任务传参
name: 线程名一般不用设置thread_obj.start()# 启动线程
示例:
def sing():while True:print("我在唱歌...")time.sleep(1)
def dance(msg):while True:print("我在跳舞...",msg)time.sleep(3)
import threading
sing_thread = threading.Thread(target=sing)
#dance_thread = threading.Thread(target=dance,args=["很开心"])
dance_thread = threading.Thread(target=dance,kwargs={"msg":"很开心"})
sing_thread.start()
dance_thread.start()
运行程序可以看到一直输出 唱歌和跳舞
我在跳舞... 很开心
我在跳舞... 很开心
我在跳舞... 很开心
我在唱歌...
我在跳舞... 很开心
我在跳舞... 很开心
我在跳舞... 很开心
我在唱歌...
网络编程
socket (简称 套接字) 是进程之间通信一个工具,进程之间想要进行网络通信需要socket。
Socket负责进程之间的网络数据传输,好比数据的搬运工。
通信服务端代码示例如下:
import socket
socket_server = socket.socket()
socket_server.bind(("localhost",8888))
socket_server.listen(1)
print("等待客户端连接...")
conn,address = socket_server.accept()
print(f"接收到客户端连接,连接来自: {address}")
while True:data = conn.recv(1024).decode("UTF-8")if data == 'exit':breakprint("接收到发送来的数据:",data)reply = input("请输入回复消息:").encode("UTF-8")conn.send(reply)
print("退出...")
conn.close()
socket_server.close()
客户端代码如下:
import socket
myclient = socket.socket()
print("开始链接服务器...")
myclient.connect(("localhost",8888))
while True:send_msg=input("请输入要发送的消息:")if send_msg=='exit':myclient.send(send_msg.encode("UTF-8"))breakmyclient.send(send_msg.encode("UTF-8"))recv_data= myclient.recv(1024)print("服务端回复的消息为:",recv_data.decode("UTF-8"))
print("退出...")
运行后 双方可以按照协议收发消息,输入exit 双方都退出

正则表达式
正则表达式,又称规则表达式(Regular Expression),是使用单个字符串来描述、匹配某个句法规则的字符串,常被用来检索、替换那些符合某个模式(规则)的文本。
简单来说,正则表达式就是使用:字符串定义规则,并通过规则去验证字符串是否匹配。
比如通过正则规则: (1+(.[\w-]+)*@[\w-]+(.[\w-]+)+$) 即可匹配一个字符串是否是标准邮箱格式
但如果不使用正则,使用if else来对字符串做判断就非常困难了。
字符串匹配
Python正则表达式,使用re模块,并基于re模块中三个基础方法来做正则匹配。
分别是:match、search、findall 三个基础方法
re.match(匹配规则, 被匹配字符串)
从被匹配字符串开头进行匹配, 匹配成功返回匹配对象(包含匹配的信息),匹配不成功返回空。
s="python 是很好的开发语言 是的 python"
res = re.match('python',s)
print(res)#<re.Match object; span=(0, 6), match='python'>
print(res.span())#(0, 6)
print(res.group())#pythons="22python 是很好的开发语言 是的 python"
res = re.match('python',s)
print(res)#None 只能匹配XXx开头
search(匹配规则, 被匹配字符串)
搜索整个字符串,找出匹配的。从前向后,找到第一个后,就停止,不会继续向后
整个字符串都找不到,返回None
s="22python 是很好的开python发语言 是的 python"
res = re.search('python',s)
print(res)#<re.Match object; span=(2, 8), match='python'>
print(res.span())#(2, 8)
print(res.group())#python
s="22python 是很好的开python发语言 是的 python"
res = re.search('python22',s)
print(res)#None
findall(匹配规则, 被匹配字符串)
匹配整个字符串,找出全部匹配项
找不到返回空list: []
s="22python 是很好的开python发语言 是的 python"
res = re.findall('python',s)
print(res)#['python', 'python', 'python']s="22python 是很好的开python发语言 是的 python"
res = re.findall('python22',s)
print(res)#[]
元字符匹配
字符匹配规则

s="22python 是很好的开python发语1212言 是的 python"
res= re.findall(r'\d', s)
print(res)#['2', '2', '1', '2', '1', '2']
res= re.findall(r'\W', s)
print(res)#[' ', ' ', ' ']
res= re.findall(r'[a-zA-Z]', s)
print(res)#['p', 'y', 't', 'h', 'o', 'n', 'p', 'y', 't', 'h', 'o', 'n', 'p', 'y', 't', 'h', 'o', 'n']
数量匹配规则

边界匹配规则

分组匹配规则

案例
匹配账号,只能由字母和数字组成,长度限制6到10位
规则为: ^[0-9a-zA-Z]{6, 10}$
匹配QQ号,要求纯数字,长度5-11,第一位不为0
规则为:^[1-9][0-9]{4, 10}&
[1-9]匹配第一位,[0-9]匹配后面4到10位
匹配邮箱地址,只允许qq、163、gmail这三种邮箱地址
规则为:^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+&
[\w-]+ 表示出现a-z A-Z 0-9 _ 和 - 字符最少一个,最多不限
(\.[\w-]+)*,表示出现组合 . 和 a-z A-Z 0-9 _ -的组合最少0次,最多不限
用于匹配:abc.ced.efg@123.com中的ced.efg这部分
@表示匹配@符号
(qq|163|gmail)表示只匹配这3个邮箱提供商
(\.[\w-]+)+表示a-z A-Z 0-9 _ -的组合最少1次,最多不限
用于匹配abc.ced.efg@123.com.cn中的.com.cn这种
最后使用+表示最少一次,即比如:.com
多了可以是:.com.cn.eu这样
\w- ↩︎
相关文章:
Python笔记12-多线程、网络编程、正则表达式
文章目录 多线程网络编程正则表达式 多线程 现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。 进程: 就是一个程序,运行在系统之上,那么便称之这个程序为一个运…...
X射线中关于高频高压发生器、高清晰平板探测器、大热容量X射线球管、远程遥控系统的解释
高频高压发生器(High Frequency High Voltage Generator) 在医用诊断X射线设备中扮演着关键角色,它主要用于产生并控制用于X射线成像的高压电能。 这种发生器采用高频逆变技术,通过将输入的低电压、大电流转换为高电压、小电流&am…...
【算法】最短路计数(搜索)复习
题目 给出一个 N 个顶点 M 条边的无向无权图,顶点编号为 1 到 N。 问从顶点 1 开始,到其他每个点的最短路有几条。 输入格式 第一行包含 2 个正整数 N,M,为图的顶点数与边数。 接下来 M 行,每行两个正整数 x,y,表…...
html火焰文字特效
下面是代码: <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>HTML5火焰文字特效DEMO演示</title><link rel"stylesheet" href"css/style.css" media"screen" type&quo…...
Redis双写一致性
所有的情况都是再并发情况下存在温蒂 一、先更新数据库,再更新缓存场景-不推荐 当有两个线程A、B,同时对一条数据进行操作,一开始数据库和redis的数据都为1,当线程A去修改数据库,将1改为2,然后线程A在修改…...
html+css+javascript实现贪吃蛇游戏
文章目录 一、贪吃蛇游戏二、JavaScript三、HTML四、CSS五、热门文章 一、贪吃蛇游戏 这是一个简单的用HTML、CSS和JavaScript实现的贪吃蛇游戏示例。 HTML部分: <!DOCTYPE html> <html> <head><title>贪吃蛇游戏</title><styl…...
【K8S】Kubernetes 中滚动发布由浅入深实战
目录 一、Kubernetes中滚动发布的需求背景1.1 滚动发布1.2 滚动发布、蓝绿发布、金丝雀发布的区别 二、Kubernetes中实现滚动发布2.1 定义Kubernetes中的版本2.2 创建 Deployment 资源对象2.2.1 在 Yaml 中定义 Deployment 资源对象2.2.2 执行命令创建 Deployment 资源对象 三、…...
MSP430仿真器使用常见问题
一、 主要是驱动安装问题 有用户反应驱动安装不上,按照用户手册操作一直不能安装成功。 可以尝试如下步骤进行安装。 1. 双击设备管理器中无法安装或者提示有错误的430仿真器设备 选择驱动程序——更新驱动程序 选择手动安装 选择从电脑设备驱动列表中安装 弹出下…...
芯驰E3340软件编译以及更新步骤
打开已有工程File->Open Solution: 东南项目:e3340\boards\e3_324_ref_display\proj\jetour-t1n-fl3\sf\SES 编译:build->build sf 增加头文件和宏定义: 编译完成sf后,进行编译bootloader 东南项目:e3340\boa…...
HCIA——18实验:NAT
学习目标: NAT 学习内容: NAT 1.要求——基本的 2.模型 3.IP分配、规划、优化 1)思路 R2为ISP路由器,其上只能配置ip地址,不得冉进行其他的任何配置—ospf配置 认证 、汇总、沉默接口、加快收敛、缺省路由 PC1-PC2…...
在VBA中使用SQL
VBA在处理大量的数据/计算时如果使用常规方法会比较慢,因此需要对其进行性能优化以提高运行速度,一般的方法是数组计算或者sql计算。SQL计算的速度最快,限制也是最多的,数组速度其次,灵活性也更高 如果要在vba中调用sql处理数据基本可以遵循一个套路,只要修改其中的SQL语…...
vue项目中使用Element多个Form表单同时验证
一、项目需求 在项目中一个页面中需要实现多个Form表单,并在页面提交时需要对多个Form表单进行校验,多个表单都校验成功时才能提交。 二、实现效果 三、多个表单验证 注意项:多个form表单,每个表单上都设置单独的model和ref&am…...
自然语言处理--概率最大中文分词
自然语言处理附加作业--概率最大中文分词 一、理论描述 中文分词是指将中文句子或文本按照语义和语法规则进行切分成词语的过程。在中文语言中,词语之间没有明显的空格或标点符号来分隔,因此需要通过分词工具或算法来实现对中文文本的分词处理。分词的…...
k8s-基础知识(Service,NodePort,CusterIP,NameSpace,资源限制)
Service 它提供了服务程序和外部的各种组件通信的能力: 1 Service 有固定的IP和端口 2 Service 背后是pod在工作 Kubernetes 会给Service分配一个静态 IP 地址,Service自动管理、维护后面动态变化的 Pod 集合,当客户端访问 Serviceÿ…...
【腾讯云】您使用的腾讯云服务存在违规信息,请尽快处理
收到【腾讯云】您使用的腾讯云服务存在违规信息,请尽快处理,如何解决?在腾讯云服务器部署网站提示网站有违规信息如何处理?腾讯云百科txybk告诉各位站长,在腾讯网址安全中心申诉,申诉通过后截图上传给腾讯云…...
深度学习 Day27——J6ResNeXt-50实战解析
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 文章目录 前言1 我的环境2 pytorch实现DenseNet算法2.1 前期准备2.1.1 引入库2.1.2 设…...
【力扣 50】Pow(x, n) C++题解(数学+递归+快速幂)
实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示例 2: 输入:x 2.10000, n 3 输出:9.26100 …...
速盾:服务器接入CDN后上传图片失败的解决方案
本文将探讨当服务器接入CDN后,上传图片失败的常见原因,并提供解决方案以解决这些问题。同时,我们还将附上一些相关的问题和解答,让读者更好地理解和应对这些挑战。 随着互联网的持续发展,网站的性能和速度对于用户体验…...
LabVIEW高级CAN通信系统
LabVIEW高级CAN通信系统 在现代卫星通信和数据处理领域,精确的数据管理和控制系统是至关重要的。设计了一个基于LabVIEW的CAN通信系统,它结合了FPGA技术和LabVIEW软件,主要应用于模拟卫星平台的数据交换。这个系统的设计不仅充分体现了FPGA在…...
FastSpeech2——TTS论文阅读
笔记地址:https://flowus.cn/share/1683b50b-1469-4d57-bef0-7631d39ac8f0 【FlowUs 息流】FastSpeech2 论文地址:lFastSpeech 2: Fast and High-Quality End-to-End Text to Speechhttps://arxiv.org/abs/2006.04558 Abstract: tacotron→…...
Univer:企业级协作平台开发实战
Univer:企业级协作平台开发实战 【免费下载链接】univer Build AI-native spreadsheets. Univer is a full-stack framework for creating and editing spreadsheets on both web and server. With Univer Platform, Univer Spreadsheets is driven directly throug…...
Intv_AI_MK11跨平台开发体验:在Windows WSL2中无缝使用GPU进行模型调试
Intv_AI_MK11跨平台开发体验:在Windows WSL2中无缝使用GPU进行模型调试 1. 为什么选择WSL2进行AI开发 对于习惯Windows系统的开发者来说,直接使用Linux环境进行AI模型开发往往面临诸多不便。WSL2(Windows Subsystem for Linux 2)…...
告别繁琐操作:用快马AI定制你的智能FileZilla,实现自动化文件管理
告别繁琐操作:用快马AI定制你的智能FileZilla,实现自动化文件管理 作为一个经常需要处理文件传输的开发人员,我深知传统FTP工具的局限性。每次都要重复配置服务器信息,手动同步文件夹,还要花时间筛选文件,…...
宝可梦随机化终极指南:Universal Pokemon Randomizer ZX 完全使用教程
宝可梦随机化终极指南:Universal Pokemon Randomizer ZX 完全使用教程 【免费下载链接】universal-pokemon-randomizer-zx Public repository of source code for the Universal Pokemon Randomizer ZX 项目地址: https://gitcode.com/gh_mirrors/un/universal-po…...
如何高效管理LiteDB数据库?LiteDB.Studio实战指南与深度解析
如何高效管理LiteDB数据库?LiteDB.Studio实战指南与深度解析 【免费下载链接】LiteDB.Studio A GUI tool for viewing and editing documents for LiteDB v5 项目地址: https://gitcode.com/gh_mirrors/li/LiteDB.Studio 在现代软件开发中,嵌入式…...
3个核心模块揭秘:Python量化投资如何免费获取通达信专业数据
3个核心模块揭秘:Python量化投资如何免费获取通达信专业数据 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 你是否在量化投资中为数据获取而烦恼?商业接口太贵,…...
像素幻梦·创意工坊应用场景:独立音乐人专辑封面像素艺术生成流程
像素幻梦创意工坊应用场景:独立音乐人专辑封面像素艺术生成流程 1. 引言:像素艺术在音乐视觉中的价值 在数字音乐时代,专辑封面依然是艺术家表达音乐理念的重要载体。对于独立音乐人而言,独特的视觉风格往往能成为作品的标志性符…...
基于 LlamaFactory 与 LoRA 微调开源大模型:构建高效文本分类系统的实践指南
1. 为什么选择LlamaFactoryLoRA做文本分类? 最近在做一个政务工单分类项目时,我发现传统BERT模型遇到三个头疼问题:标注成本高(需要上万条数据)、领域迁移难(换个场景就失效)、小样本表现差&…...
等保三级Java安全改造全周期实录,从代码审计到渗透验证的12个生死关卡
第一章:等保三级Java安全改造的合规基线与生命周期全景图等保三级对Java应用提出了覆盖身份鉴别、访问控制、安全审计、通信保密性、代码安全及可信执行环境的全维度要求。其合规基线并非静态清单,而是贯穿需求分析、设计开发、测试验证、上线部署与持续…...
忍者像素绘卷:天界画坊Python入门实战,3步搭建AI绘画环境
忍者像素绘卷:天界画坊Python入门实战,3步搭建AI绘画环境 1. 前言:当Python遇见像素艺术 还记得小时候玩过的8-bit游戏吗?那些由一个个小方块组成的像素世界,如今正以全新的方式回归。天界画坊是一个开源的AI绘画工具…...
