Многопроцессорная обработка python вызывает struct.error - PullRequest
0 голосов
/ 26 марта 2020

Я использую следующий многопроцессорный код:

manager = mp.Manager()
returns = manager.dict()
state = manager.dict()
pool = manager.Pool(processes=workers)
results = pool.starmap_async(extract_traces, [(
        v,
        path,
        masks[v],
        state,
        returns,
        max_frames,
        False
    ) for v in videos
])

Он работает идеально, пока я не увеличу размер masks, то есть массивов numpy. Затем метод starmap_asyn c выдает следующую ошибку:

.../signal_extraction.py", line 197, in parallel_extract_traces_from_videos                                                                    
) for v in videos                                                                                                                                                                                       
File "<string>", line 2, in starmap_async                                                                                                                                                                 
File "/home/eule/anaconda3/envs/detector/lib/python3.7/multiprocessing/managers.py", line 
795, in _callmethod
conn.send((self._id, methodname, args, kwds))
File "/home/eule/anaconda3/envs/detector/lib/python3.7/multiprocessing/connection.py", line 
206, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File "/home/eule/anaconda3/envs/detector/lib/python3.7/multiprocessing/connection.py", line 
393, in _send_bytes
header = struct.pack("!i", n)
struct.error: 'i' format requires -2147483648 <= number <= 2147483647

Я понимаю, что это связано с чем-то, не находящимся в диапазоне 32 бит, но я нигде не смог найти решение этой проблемы .

Также, когда я запускаю метод extract_traces из простого для l oop, он отлично работает даже с большими массивами masks. Есть ли какое-то ограничение для многопроцессорных процессов, которое я превышаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...