Python многопроцессорный код зависает из-за очереди - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь поэкспериментировать с загрузкой нескольких файлов с многопроцессорной обработкой в ​​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()
...