No se puede decapar objetos locales mientras se intenta el multiprocesamiento

Estoy tratando de hacer un raspado de multiprocesamiento de un sitio web, donde obtengo una lista de todos los nodos de los que quiero obtener información, y luego genero un Pool así que en lugar de obtener los datos uno por uno, lo hace en paralelo. Mi código es el siguiente:

from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import multiprocessing def ResPartido(node): ft=node.find_element_by_css_selector('.status').text if ft.strip()!='FT': return hora=node.find_element_by_css_selector('.time').text names=list() for nam in node.find_elements_by_xpath( './/td[contains(@style,"text-align")]/a[contains(@id,"team")]'): name=nam.text if '(N)' in name: name=name.split('(N)')[0] names.append(name) score=node.find_element_by_css_selector('.red') return [hora,name,score.text] if __name__ == "__main__": browser=webdriver.Chrome() SOME CODE nodes=browser.find_elements_by_xpath( '//tr[contains(@align,"center")]/following-sibling::tr[.//div[contains(@class,"toolimg")]]') p = multiprocessing.Pool() p.map(ResPartido,nodes) >AttributeError: Can't pickle local object '_createenviron..encodekey' 

Imagen de mi terminal python con el error.

Al revisar la documentación, dice que las listas son objetos seleccionables, y por lo tanto son funciones declaradas antes de la principal, por lo que no entiendo qué estoy haciendo mal cuando uso el MultiProcessing.

Por lo que he estado leyendo, el problema es que los nodes son una lista de objetos webdriver, que no son serializables. Teniendo en cuenta esto, el único enfoque posible con el que puedo venir es el siguiente.

1- En lugar de obtener la etiqueta completa como un elemento de la lista de nodos, obtenga solo lo que la hace única de la otra. En mi ejemplo, cada fila tiene un identificador de número de serie

 nodes=browser.find_elements_by_xpath( '//tr[contains(@align,"center")]/following-sibling::tr[.//div[contains(@class,"toolimg")]]/@id').get_attribute() nodes=['1232489','1242356',......] 

2- Pásalo, junto con el navegador a la función de mapa.

 pr=partial(ResPartido,b=browser) p.map(pr,nodes) 

3- En la función ResPartido encuentra esa fila única con la cadena que identifica su @id

 browser.find_elements_by_xpath('//tr[contains(@id,%s)]' %s node) 

Con ese bypass, que aún no he probado, creo que podría obtener lo que quería sin problemas con los objetos que se pueden recoger.