由于python的全局解释器锁,无法实现线程并行,要想实现并行,可以通过多进程实现
创建多进程需要用到python模块为mulitmultiprocessing,具体用法和多线程差不多
进入正题:
首先,创建一个project_conf.py的配置文件,用来存放手机的sn号,这个sn号需要全局用到,而且不会改变
#project_conf.py
#默认为空
PROJECT_SN = ''
然后创建一个读取设备SN号的函数,随便哪个模块,能调用就行,我是放在入口文件main.py中
def get_devices_list():
""" 获取手机设备"""
cmd = r'adb devices'
pr = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
pr.wait()
out = pr.stdout.readlines() # out = pr.stdout.read().decode("UTF-8")
devices = []
for i in (out)[1:-1]:
device = str(i).split("\\")[0].split("'")[-1]
devices.append(device)
return devices
再实现多线程
if __name__ == '__main__':
#进程列表
p = []
devices = getphonelist()#取得设备列表
for i in devices:
#此处main为脚本入口,每有一个设备,便创建一个进程,传入sn号供程序全局使用
i = Process(target=main,args=(i,))
p.append(i)
for i in p:
i.start()
for i in p:
i.join()
main函数:
import project_conf
def main(device):
#给此全局SN赋值,供脚本全局使用,如连接设备,区分log,截图命名等
project_conf.PROJECT_SN=device
#运行测试
pytest.main()