python笔记 7-8 进程池 进程通信 迭代器 消息队列 Queue 协程 和正则表达式

day7 进程 进程池 进程通信 迭代器
消息队列 Queue
作用 用于多个进程间的通信
操作put放入消息(值)
put_nowait()
放入值,不等待
如果队满,则报错
get获取消息(值)
get_nowait()
获取值,不等待
如果队空,则报错
判断
full()是否已满
empty()是否已空
注意:
放入值后,立刻获取是否为空,结果为True
原因分析:放入值和读取值同时进行了
qsize()队列长度
部分操作系统,可能会报错
进程池
python中,进程池内部会维护一个进程序列。当需要时,程序会去进程池中获取一个进程
进程池模型

迭代器
可迭代对象:列表,元组,字典,range,字符串…
检测可迭代对象;isinstance True 可迭代
False 不可迭代
使用步骤导入模块 from collections import Iterable
使用函数 isinstance(要检测的对象, Iterable)
可迭代对象的本质
所属类中含有 iter() 方法
返回迭代器
所有可迭代对象中都含有迭代器
迭代器作用
记录当前迭代位置
next(迭代器) 获取 元素值
获取迭代器
iter(可迭代对象)
for…in… 循环的本质 ;for循环获取可迭代对象的迭代器通过迭代器的next方法获取每个元素
for循环内部帮我们捕获了,StopIteration 的异常
自定义迭代对象
自定义列表类
必须有iter()
自定义迭代器
iter()
next()
生成器
一个特殊的迭代器
创建方法
方法一:推到式(x*2 for x in range(10))
方法二:函数中使用yield
yield 有两点作用
保存当前的运行状态,然后暂停执行,将生成器挂起
将 yield 关键字后面的表达式值 返回(起到return 的作用)
生成器中可以使用return
会让程序报错
可以通过异常捕获,获取return 的内容
使用send唤醒
使用send() 可以向生成器发送信息
第一次必须 send(None)
第二次 send(“xxx”)
生成器接收方法
params = yield item

Python高级day08 协程 和正则表达式
协程是一个特殊的生成器
在不开辟子线程的情况下,执行多任务协程执行有先后顺序交替
协程的创建
生成器
函数中使用了 yield
greenlet 使用greenlet 创建协程
用法
导包from greenlet import greenlet
greenlet(函数名)
需要开发者自己手动切换,协程.switch() 切换
gevent自动调度的协程(必须熟练)
创建方法;导入模块
import gevent
gevent.spawn(函数名,参数1,参数2,…)
gevent耗时操作问题
1、使用gevent能够识别的 gevent.sleep()
2、打补丁 导入模块
from gevent import monkey
monkey.patch_all()
joinall(列表) 让主线程等待协程执行完毕后再退出
进程、线程、协程的区别
进程
资源分配的基本单位,重量级
单独分配内存
线程
任务调度的基本单位
本身不拥有资源,占用很少的运行资源
协程 微线程
在不创建线程的基础上,执行多任务
正则表达式 一个特殊的规则
regex
应用场景
提取指定的字符串
爬虫
查找、替换内容
构成
原子
普通字符
一个正则表达式至少包含一个原子
元字符
特殊的符号
模式修饰符
测试工具
regexbuddy
匹配单个字符
.不包含\n的任意字符
[]匹配单个字符,用[ ] 限定单个字符可以出现的范围
[^4-7] 和 ^[4-7]
\d0-9 的数字
\D不是0-9的数字
\w字母、数字、下花线
\W不是字母、数字、下花线(如:空格 )
\s空格
\S非空
匹配多个字符 *
表示前一个字符出现0次到无限次
+
表示前一个字符出现1次到无限次
?
表示前一个字符出现0次到1次
{m}
表示前一个字符出现m次
{m,n}
表示前一个字符最少出现m次,最多n次
匹配开头和结尾的字符
^ 表示开头的字符
$ 表示结尾的字符
re模块的使用
导入 模块 import re
使用 re.match(“正则表达式”, “源字符串”)
作用,从字符串开头开始匹配满足规则的内容
匹配成功
返回一个match object 对象
匹配失败
None
match object 对象
group() 获取匹配的结果
group(1)获取第一组正则匹配的内容
匹配分组 |
匹配左右任意一个表达式()
将括号中的内容当做一个分组处理 \n
引用 第n 组 ?P<分组名>
引用(?P=分组名)
re模块高级用法
search(“正则”,”要匹配的字符串”)
在指定字符串中搜索,并返回第一次匹配成功的内容
findall(“正则”,”要匹配的内容”)
在指定字符串中,返回所有匹配的的内容
返回值列表
sub(“正则”,“替换成的内容”,“源字符串”)
使用正则表达式把要替换的内容找出来,并且替换为“要更新的内容”
返回字符串
split(“正则”,“源字符串”)
使用正则表达式对源字符串的内容进行分割,返回列表
正则的贪婪和非贪婪
贪婪
匹配成功,尽可能多取匹配的内容
非贪婪
匹配成功,尽可能少的取内容
r的作用
让正则表达式中的字符表示其原有的意思,而非转义字符(默认会把部分字符转成其他含义)

猜你喜欢

转载自blog.csdn.net/qq_42377379/article/details/82081118
今日推荐