Daha basit bir örnekle hatayı yeniden oluşturamadığım için üzgünüm ve kodumu göndermek için çok karmaşık. Programı normal Python yerine IPython kabuğunda çalıştırırsam işler iyi gider.
Bu sorunla ilgili daha önceki bazı notlara baktım. Bunların hepsine, bir sınıf işlevi içinde tanımlanan işlevi çağırmak için havuz kullanılması neden olmuştur. Ama benim için durum böyle değil.
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
Herhangi bir yardımı takdir ediyorum.
Güncelleme : Turşu yaptığım fonksiyon modülün en üst seviyesinde tanımlanır. İç içe geçmiş işlev içeren bir işlevi çağırmasına rağmen. yani, iç içe bir işlevi olan f()
çağrıları g()
çağırır ve ben çağırıyorum . , , Tüm üst düzeyinde tanımlanır. Bu desenle daha basit bir örnek denedim ve yine de çalışıyor.h()
i()
pool.apply_async(f)
f()
g()
h()
dill
ve kullanarak ek cevapları okumak için tavsiye ederimpathos
. Ancak, vtkobjects ile çalışırken çözümlerden herhangi bir şans yok :( Herkes paralel işleme vtkPolyData python kodu çalıştırmayı başardı?