У меня есть фрагмент кода, который я распараллеливаю следующим образом: -
def stats_wrapper(a,b,c,d):
q = mp.Queue()
# b here is a dictionary
processes = [mp.Process(target = stats,args = (a,{b1:b[b1]},c,d,q) ) for b1 in b]
for p in processes:
p.start()
results = []
for p in processes:
results.append(q.get())
return(results)
Я вижу много процессов zomb ie после выполнения этого блока. Я пытаюсь использовать метод .join()
перед строкой return(result)
следующим образом: -
for p in processes:
p.join()
, но это не помогает избавиться от процессов zomb ie. Может ли кто-нибудь помочь мне точно определить, где я ошибаюсь с моим кодом?
Редактировать: - Я использую в другом месте моего кода другой подход к распараллеливанию, который снова дает мне несколько процессов зомба ie, кроме Я не знаю, как изменить код, чтобы добавить соединение.
q = mp.Queue()
jobs = (func1,func2,func3)
args = ((arg1,arg2,arg3),(arg2,arg3),(arg1,arg4))
for job,arg in zip(jobs,args):
mp.Process(target = job,args = arg,name = str(job.__name__)).start()
result = []
for _ in range(len(job)):
result.append(q.get())