Tôi xin lỗi vì tôi không thể tái tạo lỗi bằng một ví dụ đơn giản hơn và mã của tôi quá phức tạp để đăng. Nếu tôi chạy chương trình trong IPython shell thay vì Python thông thường, mọi thứ sẽ hoạt động tốt.
Tôi đã tra cứu một số lưu ý trước đây về vấn đề này. Tất cả đều do sử dụng pool để gọi hàm được định nghĩa trong hàm class. Nhưng đây không phải là trường hợp của tôi.
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
Tôi sẽ đánh giá cao sự giúp đỡ nào.
Cập nhật : Hàm tôi chọn được xác định ở cấp cao nhất của mô-đun. Mặc dù nó gọi một hàm chứa hàm lồng nhau. tức là f()
gọi các cuộc g()
gọi h()
có chức năng lồng nhau i()
và tôi đang gọi pool.apply_async(f)
. f()
, g()
, h()
Tất cả đều được xác định ở cấp cao nhất. Tôi đã thử ví dụ đơn giản hơn với mẫu này và nó hoạt động mặc dù.
dill
vàpathos
. Tuy nhiên, tôi không gặp may với bất kỳ giải pháp nào khi làm việc với vtkobjects :( Bất cứ ai cũng có thể chạy mã python trong xử lý song song vtkPolyData?