软件测试肖sir__多线程和多进程
软件测试肖sir__多线程和多进程
一、开发编程
1、进程
定义:是计算机资源分配的最小单元(进程未线程提供资源)理解:一个正在运行的程序
注意点:一个程序运行最少一个进程
2、线程
定义:是计算机中可以被cpu调度的最小单元(真正在工作)
3、协程
4、程序
定义:程序编写完运行称之为程序。正在运行的代码就是进程。
二、作用
并发:
1、引入并发,就是为了提升程序运行速度
程序提速方法:a、单线程串行 b、多线程并发 c、多cpu并行 d、多机器并行
多线程:threading (私来定)利用cpu和io可以同时执行得原理,让cpu一直等待i/o完成
多线程:multiprocessing ,利用多核cpu的能力,真正的并行执行任务
异步io:asyncin 在单线程利用cpu和io同事执行的原理,实现函数异步执行
使用lock多资源加锁,防止冲突访问;
使用queue实现不同线程/进程之间的通信,实现生成者-消费者模式
使用线程池pool/进程池pool,简化线程,进程的任务提交,等待结束,获取结果
使用subprocess启动外部程序的进程,并进行输入输出交互
2、提高测试技能,高薪之路
场景1:
1、一个网络爬虫,按顺序爬取花1小时,采用并发下载减少到20分钟
2、一个app得应用,优化每次打开页面需要3ms,采用异步并发提升到每次200毫秒
三、python3中实现多进程
(一)multiprocessing 模块
1、支持子进程、通信、共享数据
2、Process ([group [, target [, name [, args [. kwargs]]ll]) #是一个process类
方法:
a、is_alive() 如果运行,返回true
b、join(【timeout】)等待 进程p终止 【】方括号,表示可有可无
c、run() 进程启动时运行的方法
d、start() 启动进程,
e、terminate()强制终止进程
(2)subprocess模块
案例:
========================================
join方法:
(1)在执行完在输出方法join
对比案例:
先执行完的代码:
代码如下:‘join’ 或join(时间)
join后面接时间点,设置结束点
======================================
导入进程包 import multiprocessing
创建子进程并指定执行的任务sub_process =multiprocessing.Process (target=任务名)
启动进程执行任务sub_process.start()
传参数:
元组方式传参︰元组方式传参一定要和参数的顺序保持一致。
字典方式传参:字典方式传参字典中的key一定要和参数名保持一致。
======================================
二、获取进程编号的两种方式:
1.获取当前进程编号
os.getpid)
格式:
import os
pid=os.getpid()
print(pid)
案例:
⒉获取当前父进程编号
os.getppid()
案例:
3、获取父进程和子进程
===========================
多进程的注意点:
1、主进程会等待所有的子进程执行结束再结束
案例:
2、