上一篇简单的介绍了如何经过多线程进行启动app,可是后面发现了一个问题,就是app操做必需要等到一台结束后,下一台才能进行任务,那么有没有办法让他们同时运行呢?这个时候咱们能够了解下多进程。跳转门:appium---多线程启动app(多台设备启动app)html
线程:计算机的执行单位以线程为单位。计算机的最小可执行是线程。。线程是可执行的基本单位,是可被调度的基本单位。线程不能够本身独立拥有资源。线程的执行,必须依赖于所属进程中的资源。。android
进程:进程是资源分配的基本单位,进程中必须至少应该有一个线程web
继续上一篇文章的内容,多进程启动app,在之前的代码基础上进行修改线程部分多线程
经过把启动appium的方法经过多进程的方法进行启动。app
def main(self): '''多进程启动''' multi_list = [] for i in range(2): appium_server = multiprocessing.Process(target=self.get_commad) multi_list.append(appium_server) for j in multi_list: j.start() for j in multi_list: j.join()
上面经过多进程的方法进行了实现了同事启动appium,可是若是想要继续启动webdriver服务,这里安静选择了多线程启动。post
# coding:utf-8 from pages.login_page import LoginPage import time import os import threading import multiprocessing from common.aa import Server path =os.path.dirname(os.getcwd()) # 获取到yaml文件路径 yaml_path = os.path.join(os.path.join(path,'config'),'element.yaml') class BaseDriver: def login(self,driver): page =LoginPage(driver) time.sleep(8) # 获取用户名元素以及输入内容 use = page.get_username_element(yaml_path) use.send_keys('1111') # 获取密码元素以及输入内容 pas = page.get_password_element(yaml_path) pas.send_keys('22222') # 进行点击登陆 button = page.get_login_button_element(yaml_path) button.click() if __name__ == '__main__': x = BaseDriver() server = Server() dev = Server().get_driver() t1 = threading.Thread(target=server.main) t1.start() time.sleep(10) aa = [] for i in dev: devices = server.android_start(i) t2 = threading.Thread(target=x.login,args=(devices,)) aa.append(t2) for j in aa: j.start()
这里有安静执行的结果,动图有点长。学习
安静可能对线程和进程不是很懂的理解,而后写出来这么low的代码,但愿有哪位大神看到了,多多指点,共同窗习~测试