如何解决Selenium多处理错误?

时间:2018-02-20 10:52:57

标签: python selenium

我想初始化4个chromes并写下以下内容:

def get_driver(i):
    print(i)
    driver = webdriver.Chrome(chrome_options=options)
    return driver


if __name__ == '__main__':
    with Pool(4) as p:
        drv = p.map(get_driver, [i for i in range(4)])

Error: multiprocessing.pool.MaybeEncodingError: Error sending result: 
'[<selenium.webdriver.chrome.webdriver.WebDriver
(session="466ec119aff28d62c3c621af2b190b0f")>]'. 
Reason: 'AttributeError("Can't pickle local object '_createenviron.<locals>.encodekey'",)'

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这个问题很老了,但是对于某些人来说可以派上用场,您不需要将其转移到游泳池中,而是立即使用它。

def get_driver():
    driver = webdriver.Chrome(chrome_options=options)
    print("open browser, current session is {}".format(driver.session_id))
    return driver

def open_page(url)
    driver = get_driver()
    browser.get(url)

if __name__ == '__main__':
    url = [['http://ya.ru'],['http://www.google.com']]
    p = Pool(2)
    p.starmap(open_page, tuple(url))