multiprocessing.pool код застрял и не завершает работу - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь использовать класс пула в многопроцессорном модуле в python для параллельной обработки некоторых данных во фрейме данных pandas (код указан в разделе «Основной код» ниже). Проблема в том, что мой код застревает и не завершает работу, даже если я предоставлю ему небольшой фрейм входных данных (даже 10 строк). Я также попытался запустить простой пример кода (код, упомянутый в разделе «Пример пула» ниже), и даже он не запускается.

Вот подробное описание того, что я пытаюсь сделать, в приведенном ниже коде: У меня есть индекс данных dataframe, который имеет 10 столбцов и 650K строк. Идея состоит в том, чтобы взять 10 значений в каждом ряду фрейма данных индексов, а для строк с этими индексами из целевого фрейма данных traindat взять среднее из нескольких его столбцов. Я должен сделать это для всех строк индекса данных (650K).

Основной код:

from multiprocessing import Pool
def func(x,i):
    dftmp=traindat.iloc[x,4:28].mean()
    return pd.DataFrame(dftmp).transpose()

pool = mp.Pool(processes=3)
new_rows = pool.map(func, [(row,idx) for idx,row in indices.iterrows()])
pool.close()
pool.join()
data_all_new = pd.concat(new_rows)

Поскольку этот код не запускается, я также попробовал следующий простой код, чтобы посмотреть, работает ли пул вообще для меня. И это не так. Пример пула:

import sys
sys.modules['__main__'].__file__ = 'ipython'
from multiprocessing import Pool
def f(x):
    return x*x

if __name__ == '__main__':
    p = Pool(5)
    print(p.map(f, [1, 2, 3]))

В моем коде нет ошибок. Это просто застревает и не заканчивает бежать. Пожалуйста, помогите мне, если вы понимаете эту проблему.

Редактировать: позже я понял, что проблема возникает только в Windows. Таким образом, редактирование вопроса, чтобы включить это.

1 Ответ

0 голосов
/ 05 июля 2019

Я понял, что это повторяющийся вопрос поздно с помощью коллеги. Размещение ссылки на оригинальный вопрос и ответ на случай, если кто-то наткнется на это: Базовая параллельная программа Python зависает в Windows

Похоже, это проблема, связанная с неправильной настройкой IDE.

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