ฉันขอโทษที่ฉันไม่สามารถทำซ้ำข้อผิดพลาดด้วยตัวอย่างที่ง่ายขึ้นและรหัสของฉันซับซ้อนเกินกว่าจะโพสต์ ถ้าฉันรันโปรแกรมใน IPython shell แทนที่จะเป็น Python ปกติสิ่งต่าง ๆ ก็ใช้ได้ดี
ฉันค้นหาบันทึกย่อก่อนหน้านี้เกี่ยวกับปัญหานี้ พวกเขาทั้งหมดเกิดจากการใช้พูลเพื่อเรียกใช้ฟังก์ชันที่กำหนดไว้ในฟังก์ชันคลาส แต่นี่ไม่ใช่กรณีสำหรับฉัน
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
ฉันอยากจะขอบคุณความช่วยเหลือใด ๆ.
ปรับปรุง : ฟังก์ชั่นที่ฉันดองถูกกำหนดไว้ที่ระดับบนสุดของโมดูล แม้ว่ามันจะเรียกฟังก์ชั่นที่มีฟังก์ชั่นที่ซ้อนกัน เช่นf()
เรียกg()
สายh()
ซึ่งมีฟังก์ชั่นที่ซ้อนกันและฉันโทรi()
, , ที่กำหนดไว้ทั้งหมดในระดับด้านบน ฉันลองตัวอย่างที่ง่ายขึ้นด้วยรูปแบบนี้และทำงานได้pool.apply_async(f)
f()
g()
h()
dill
pathos
แต่ผมโชคใด ๆ ของการแก้ปัญหาเมื่อทำงานร่วมกับ vtkobjects :( ทุกคนมีการจัดการเพื่อเรียกใช้รหัสหลามในการประมวลผลแบบขนาน vtkPolyData?