Я использую версию Pyswarm, реализованную для поддержки многопроцессорной обработки ( ссылка ). Я уже использовал его в Python 2.7, и он работает. Я использую сейчас Python 3.7 и получаю эту ошибку:
File "experiment.py", line 152, in <module>
processes = 4
File "/home/fabio.rangel/projects/insight_studies/binary_classifier_exploration/.direnv/python-3.6.10/lib/python3.6/site-packages/pyswarm/pso.py", line 141, in pso
fx = np.array(mp_pool.map(obj, x))
File "/usr/lib/python3.6/multiprocessing/pool.py", line 266, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
File "/usr/lib/python3.6/multiprocessing/pool.py", line 644, in get
raise self._value
File "/usr/lib/python3.6/multiprocessing/pool.py", line 424, in _handle_tasks
put(task)
File "/usr/lib/python3.6/multiprocessing/connection.py", line 206, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File "/usr/lib/python3.6/multiprocessing/reduction.py", line 51, in dumps
cls(buf, protocol).dump(obj)
ValueError: ctypes objects containing pointers cannot be pickled
Мой код прост:
from pyswarm import pso
optimizer = pso(
fitness,
lb = [1, 0, 0.0, 0.0, 0.0, 0.1, 0.0],
ub = [6, 1, 1, 1, 1, 1, 10],
swarmsize = 100,
omega=0.1,
phip=0.1,
phig=0.1,
processes = 4
)
Не могли бы вы помочь мне решить эту проблему?