Lamento não poder reproduzir o erro com um exemplo mais simples, e meu código é muito complicado para postar. Se eu executar o programa no shell IPython em vez do Python comum, as coisas funcionam bem.
Procurei algumas notas anteriores sobre esse problema. Todos eles foram causados pelo uso de pool para chamar a função definida dentro de uma função de classe. Mas esse não é o meu caso.
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib64/python2.7/threading.py", line 552, in __bootstrap_inner
self.run()
File "/usr/lib64/python2.7/threading.py", line 505, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 313, in _handle_tasks
put(task)
PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
Eu apreciaria qualquer ajuda.
Atualização : A função que eu seleciono é definida no nível superior do módulo. Embora chame uma função que contenha uma função aninhada. ou seja, f()chama as g()chamadas h()que têm uma função aninhada i(), e eu estou chamando pool.apply_async(f). f(), g(), h()São todos definidos no nível superior. Eu tentei exemplo mais simples com esse padrão e funciona embora.
dillepathos. No entanto, eu não tive sorte com qualquer uma das soluções quando se trabalha com vtkobjects :( Alguém conseguiu executar código python em processamento paralelo vtkPolyData?