Я пытаюсь поэкспериментировать с загрузкой нескольких файлов с многопроцессорной обработкой в Python и возвратом содержимого в очередь. Я попробовал это, но мой код зависает. Я пытался выяснить, где проблема, но не смог никуда добраться. Любая помощь будет оценена.
def load_data(in_queue, lats, res, no_queue, yes_queue):
try:
while not in_queue.empty():
path = in_queue.get(False)
arr = np.load(path)
arr = arr[0,0,0,lats,0:None:res]
if "0_" in path:
no_queue.put([path, arr])
else:
yes_queue.put([path, arr])
except Exception as e:
print(e)
return
all_files = sorted(glob.glob(os.path.join("/group_workspaces/jasmin4/hiresgw/dg/data/filtered_ibtracs_data", "*")))
all_files = all_files[:5]
res = 4
min = 72
max = 186
lats = range(min, max, res)
in_queue = mp.Queue()
for path in all_files:
in_queue.put(path)
no_queue = mp.Queue()
yes_queue = mp.Queue()
procs = []
for proc in range(mp.cpu_count()):
procs.append(mp.Process(target=load_data, args=(in_queue, lats, res, no_queue, yes_queue)))
for p in procs:
p.start()
for p in procs:
p.join()