可见无头铬硒

时间:2020-08-04 18:38:28

标签: python selenium memory multiprocessing

我正在编写一个程序,该程序使用multiprocessing模块打开15个Chrome Selenium实例。每个会话都会刷新并每五秒钟提取一些文本。这是代码:

import os
import time
import multiprocessing
from selenium import webdriver

from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager





def driver_routine(url, file_session):
    chrome_options = webdriver.ChromeOptions();

    chrome_options.add_argument(r'--user-data-dir=' + os.path.dirname(os.path.abspath(__file__)) + '\\' + file_session + '\\selenium')
 
    driver = webdriver.Chrome(ChromeDriverManager().install(), options = chrome_options)
    
            
    while True:
        driver.get(url)
        text = driver.find_element_by_xpath('//body')
        time.sleep(5)




if __name__=='__main__':
    processes = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
    url = 'https://somesite.com/'

    for i in range(len(processes)):
        file_session = 'session-' + str(i)
        processes[i] = multiprocessing.Process(target=driver_routine, args=(url, file_session,))
        processes[i].start()

问题在于,它占用了我的CPU内存(从任务管理器中)到100%,这使我的PC工作非常缓慢。我发现在driver_routine函数中添加了这两行:

chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu') 

将减少CPU内存使用量。这样就解决了我的问题。但是现在的问题是我看不到浏览器实例。有什么办法可以满足我的两个问题?我当时想也许以--headless模式启动浏览器,并在需要时重新打开它的GUI表单(以某种方式),那真是太棒了。或者可能是有关内存使用问题的解决方法。我是python的新手,仍在学习。任何帮助表示赞赏。

0 个答案:

没有答案