Использование Ubuntu 19.4 с conda
Я запускаю простое многопроцессорное приложение, но кажется, что я застреваю с помощью multiprocessing.Queue () (то же самое с multiprocessing.Pool ()).
Функция многопроцессорности:
def faceembedding(EMBEDDINGS_Celeb, output):
EuDist=[]
for i in range(len(EMBEDDINGS_Celebs.File)):
Celebs=np.array(EMBEDDINGS_Celebs.Embedding[i])
EuDist.append(np.linalg.norm(EMBEDDINGS-Celebs))
output.put(EuDist)
с использованием варианта очереди с:
output = mp.Queue()
jobs=[]
for i in range(4):
p=mp.Process(target=faceembedding,args(Werth[i],output))
jobs.append(p)
p.start()
p.join()
result=output.get()
застревает с использованием очереди вывода. Если я только запускаю процессы, проблем не возникает, и задания заполняются процессами. Тем не менее, размещение моих результатов в очереди, кажется, убивает все шоу (То же самое при использовании pool.map (faceembedding, Werth) ). Даже если каждый процесс занимает столько же времени, сколько и функция без многопроцессорной обработки, это займет всего пару секунд.
Я нашел этот поток , где кажется, что очередь заблокирована. Решение было неправильным типом данных. Но здесь я просто создаю массив numpy.
Как убедиться, что очередь не заблокирована?
Дополнительная информация:
установка перерыва указывает на вызываемую функцию (faceembedding), я получаю довольно длинное предупреждение (первые две строки):
[IPKernelApp] WARNING | ПРЕДУПРЕЖДЕНИЕ: попытка отправить сообщение с fork {'header': {'version': '5.3', 'date': datetime.datetime (20 ...
позже говорит о многом:
... pe \ ': \' NoneType \ ', \' size \ ': 1, \' color \ ': \' # ffffff \ ', \' view \ ': \ 'NoneType объект встроенного модуля \'}, \ ' spe c \': {\ 'type \': \ 'NoneType \', \ 'size \': 1, \ 'color \ ': \' # ffffff \ ', \' view \ ': \' NoneType объект встроенного модуля \ '}, \' _ ih \ ': {...
и более поздних версий:
... 'is_series': False, 'array_shape': None, 'array_ndim': None}, ' spe c': {'is_list': False, ' is_dict ': False,' len ': нет,' is_array ': False,' is_image ': False,' is_data_frame ': False,' is_series ': False,' array_shape ': None,' array_ndim ': None},' _ih ': {' is_list ': True,' is_dict ': False,' len ': 2,' is_array ': False, ...
Очевидно, что в форке есть проблема. Но предупреждение не информативный.
Есть ли очевидная проблема, которую я пропускаю?
Спасибо * 10 58 *