Я новичок во всем, что касается многопроцессорной обработки, и моя текущая программа не работает. Я прочитал последние часы о проблеме и много пробовал, метод в классе или вне его, а также в другом классе, и он не работал.
import multiprocessing as mp
class A:
@staticmethod
def multi():
a = [1,2,3]
b = 4
prepared = list()
for x in a:
prepared.append((x, b))
pool = mp.Pool(mp.cpu_count()-1)
result = pool.starmap(method, prepared)
pool.close()
pool.join()
print(result)
def method(a, x):
return (a-x, a+x)
if __name__ == "__main__":
a = A()
a.multi()
Это всего лишь пример того, как выглядит моя структура класса / метода (и эта работает, хотя я ничего не изменил в многопроцессорной части).
Это исключение, которое я получаю:
AttributeError: Can't pickle local object 'FeatureExtracter.<locals>.feature_extracter_fwd'
Было бы неплохо, если бы кто-то знал решение или хотя бы почему этот метод нельзя мариновать.