O objeto do módulo AttributeError do multiprocessamento não tem atributo '__path__'
Eu tenho um longo script que no final precisa executar uma função para todos os itens da lista enorme que leva muito tempo, considere, por exemplo:
input_a= [1,2,3,4] # a lengthy computation on some data
print('test.1') # for testing how the script runs
input_b= [5,6,7,8] # some other computation
print('test.2')
def input_analyzer(item_a): # analyzing item_a using input_a and input_b
return(item_a * input_a[0]*input_b[2])
from multiprocessing import Pool
def analyzer_final(input_list):
pool=Pool(7)
result=pool.map(input_analyzer, input_list)
return(result)
my_list= [10,20,30,40,1,2,2,3,4,5,6,7,8,9,90,1,2,3] # a huge list of inputs
if __name__=='__main__':
result_final=analyzer_final(my_list)
print(result_final)
return(result)
a saída desses códigos varia de execução para execução, mas o que todas as execuções têm em comum são várias execuções de script inteiro, parece que, ao atribuir 7 como Pool, o script inteiro será executado cerca de 8 vezes!
Não tenho certeza se entendi bem o conceito de multiprocessamento, mas pensei que o que deveria fazer é apenas executar a função 'input_analyzer' usando várias CPUs e não executar o script inteiro várias vezes. no caso do meu código real, é tão longo e isso me dá um erro estranho:
sem usar o multiprocessamento, eu executo esse código muito bem, não sei o que estou fazendo de errado aqui, especialmente com o erro "O objeto do módulo AttributeError não tem atributo"caminho"" agradeço qualquer ajuda.