0

셀렌을 사용하여 10 개의 Google 검색 페이지를 열고 동시에 10 개의 검색을 모두 검색하는 다음 코드가 있습니다.Python에서 병렬 실행이 발생하는지 확인하십시오.

나는 실제로 (병렬로) 올바르게 실행된다고 생각하지만, 실제로는 한 번에 브라우저의 인스턴스를 5 개씩 여는 것으로 보이기 때문에 확신하지 못합니다 (그러나 이것은 GUI 열기와 관련이 있습니다.).

이 진정으로 병렬로 실행되고 있는지 알고 사랑, 또는 내가뿐만 아니라 CPU의 코어를 사용할 필요가 있는지시겠습니까 (이 작업을 수행 할 수 있는지?)

test.py

import unittest 
from testsss import Testsss 
from concurrent.futures import ThreadPoolExecutor 

class Runner(): 

    def parallel_execution(self, *name): 

     suite = unittest.TestSuite() 

     for method in dir(Testsss): 
      if (method.startswith('test_selenium')): 
       print('testing') 
       suite.addTest(Testsss(method)) 

     with ThreadPoolExecutor(max_workers=10) as executor: 
      list_of_suites = list(suite) 
      for test in range(len(list_of_suites)): 
       test_name = str(list_of_suites[test]) 
       executor.submit(unittest.TextTestRunner().run, list_of_suites[test]) 

Runner().parallel_execution(Testsss) 

Testsss.py

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import Select 
from selenium.common.exceptions import NoSuchElementException 
import unittest 
import time 

class Testsss(unittest.TestCase): 
    print('ok3') 
    def tearDown(self): 
     self.driver.quit() 
    @staticmethod  
    def selenium_test(self, testno): 
     print('ok4') 
     self.driver = webdriver.Firefox() 
     self.driver.get("http://google.com")  
     search_field = self.driver.find_element_by_id("lst-ib") 
     search_field.send_keys("Test " + str(testno)) 
     search_field.submit() 
     print("ok1") 

    def test_selenium_1(self): 
     Testsss.selenium_test(self,1) 

    def test_selenium_2(self): 
     Testsss.selenium_test(self, 2) 

    def test_selenium_3(self): 
     Testsss.selenium_test(self, 3) 

    def test_selenium_4(self): 
     Testsss.selenium_test(self, 4)   

    def test_selenium_5(self): 
     Testsss.selenium_test(self, 5)   

    def test_selenium_6(self): 
     Testsss.selenium_test(self, 6)   

    def test_selenium_7(self): 
     Testsss.selenium_test(self, 7)   

    def test_selenium_8(self): 
     Testsss.selenium_test(self, 8)   

    def test_selenium_9(self): 
     Testsss.selenium_test(self, 9)   

    def test_selenium_10(self): 
     Testsss.selenium_test(self, 10) 

답변

1

당신이 실행중인 프로세스를 볼 수 top 쉘 명령을 사용할 수 있습니다 리눅스에서이 작업을 실행하는 경우. 열려있을 때 Shift-H을 누르면 스레드가 표시됩니다. top을보고 프로그램을 실행하면 하나의 부모 스레드에서 여러 개의 python 스레드가 실행되는 것을 볼 수 있습니다. 그렇다면 작동합니다.

+0

고마워,이 방법으로 테스트하는 것에 대해 생각하지 않았다. :) –