Python笔记12-多线程、网络编程、正则表达式
- 软件开发
- 2025-08-05 08:12:02

文章目录 多线程网络编程正则表达式 多线程
现代操作系统比如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': break print("接收到发送来的数据:",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")) break myclient.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())#python s="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)#Nonefindall(匹配规则, 被匹配字符串) 匹配整个字符串,找出全部匹配项 找不到返回空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-多线程、网络编程、正则表达式由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Python笔记12-多线程、网络编程、正则表达式”