上一篇簡單的介紹瞭如何經過多線程進行啓動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的代碼,但願有哪位大神看到了,多多指點,共同窗習~測試