《一》单线程的模式
from time import sleep
def run(name):
print(name + '在跑步' )
sleep(1)
print('跑得很累很困')
sleep(1)
li = ['张三','李四','王五']
输出结果:
张三在跑步
跑得很累很困
李四在跑步
跑得很累很困
王五在跑步
跑得很累很困
《二》多线程模式
from time import sleep
import threading
def run(name,time_):
print(name + '在跑步' )
sleep(1)
print('跑了{},跑得很累很困'.format(time_))
sleep(1)
建立线程组
th = []
创建线程(target:调用的函数)
th.append(threading.Thread(target=run, args=['张三','1小时']))
th.append(threading.Thread(target=run, args=['李四','2小时']))
th.append(threading.Thread(target=run, args=['王五','3小时']))
for t in th:
t.start()
输出结果:(谁先运行完,谁先输出来。影响因素:当下的资源分配情况、内存情况、逻辑代码的复杂性情况)
张三在跑步
李四在跑步
王五在跑步
跑了3小时,跑得很累很困(顺序可能不同)
跑了1小时,跑得很累很困(顺序可能不同)
跑了2小时,跑得很累很困(顺序可能不同)
《三》批量文件写入的操作
from time import sleep
import threading
# 综合函数
def sum(name, file, content):
run(name)
write(file, content)
# 建立线程组
th = []
def write(file,content):
with open(file,'w',encoding='utf-8') as f:
f.write(content)
def run(name):
print(name + '在跑步' )
sleep(1)
print('跑得很累很困')
sleep(1)
files = ['../data/1.txt','../data/2.txt','../data/3.txt']
names = ['张三','李四','王五']
contents = ['张三跑得很累','李四跑得很困','王五跑得又累又困']
th.append(threading.Thread(target=sum, args=[names[0],files[0],contents[0]]))
th.append(threading.Thread(target=sum, args=[names[1],files[1],contents[1]]))
th.append(threading.Thread(target=sum, args=[names[2],files[2],contents[2]]))
for t in th:
t.start()
输出结果:(1.txt.张三跑得很累,2.李四跑得很困,3.王五跑得又累又困)
张三在跑步
李四在跑步
王五在跑步
跑得很累很困
跑得很累很困
跑得很累很困
《四》基于多线程形态优化POM的框架的形态
main.py
'''
程序主入口:
1. 调用excel读取执行测试用例
2. 读取指定路径下所有的excel测试用例
3. 初始化日志器与关键类
4. 采取的是多线程的模式进行优化
'''
import os
import threading
from test008.test0083.test0083_08.conf import log_conf
from test008.test0083.test0083_08.excel_driver import excel_read
if __name__ == '__main__':
# 创建日志生成器
log = log_conf.log_get('conf/log.ini')
# 创建线程组
th = []
# 定义测试用例cs
cs = []
# 获取指定路径下的所有测试用例:用例集中在 test_data/ 的路径下
for path,dir,files in os.walk('test_data'):
# 保存获取的所有测试用例文件:其实就是后缀名为xlsx的文件
for file in files:
# 获取文件信息
file_name = os.path.splitext(file)[0]
file_type = os.path.splitext(file)[1]
# 判断文件是否为excel(excel的后缀名为:.xlsx)
if file_type == '.xlsx':
# 判断是否需要添加该用例
# if 'old' not in file_name:
cs.append(path+'/' + file)
else:
log.info('文件类型错误:{}'.format(file))
# 调用excel_driver中的run函数,运行测试用例
for c in cs:
# log.info('运行测试用例:{}'.format(c))
# excel_read.run(c,log)
th.append(threading.Thread(target=excel_read.run,args=[c, log]))
for t in th:
t.start()
'''
1.创建线程组: th = []
2.注释下面三行:
if 'old' not in file_name:
log.info('运行测试用例:{}'.format(c))
excel_read.run(c,log)
3.th.append(threading.Thread(target=excel_read.run,args=[c, log]))
'''
人生苦短,及时行乐
分类:
测码教育 / 课后作业
, 测码教育 / 课堂代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现