Mulitprocessing Queue, кажется, заблокирован, и форк имеет проблему - PullRequest
0 голосов
/ 11 марта 2020

Использование 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 *

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