Saya menyesal tidak dapat mereproduksi kesalahan dengan contoh yang lebih sederhana, dan kode saya terlalu rumit untuk dikirim. Jika saya menjalankan program di shell IPython bukan Python biasa, semuanya berjalan dengan baik.
Saya mencari beberapa catatan sebelumnya tentang masalah ini. Mereka semua disebabkan oleh penggunaan pool untuk memanggil fungsi yang didefinisikan dalam fungsi kelas. Tapi ini tidak terjadi pada saya.
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
Saya sangat menghargai bantuan apa pun.
Pembaruan : Fungsi saya acar didefinisikan di tingkat atas modul. Padahal itu memanggil fungsi yang berisi fungsi bersarang. yaitu, f()
panggilan g()
panggilan h()
yang memiliki fungsi bersarang i()
, dan saya menelepon pool.apply_async(f)
. f()
, g()
, h()
Semua didefinisikan di tingkat atas. Saya mencoba contoh sederhana dengan pola ini dan itu berhasil.
dill
dan memanfaatkanpathos
. Namun, saya tidak beruntung dengan salah satu solusi ketika bekerja dengan vtkobjects :( Adakah yang telah berhasil menjalankan kode python dalam pemrosesan paralel vtkPolyData?