Почему моя многопроцессорная функция map_async застревает? - PullRequest
1 голос
/ 16 апреля 2019

Моя многопоточная операция зависает при вызове метода map_async с разделенным DataFrame в качестве входных данных.Что может вызвать эту проблему?

Я попытался выяснить, имеет ли значение, имеют ли разделенные кадры данных одинаковый размер или нет.Также я протестировал и Pool.map, и Pool.map_sync.Мой процессор составляет около 80% для четырех ядер.Кроме того, я изучил различные темы вопросов по этому вопросу.Одна из проблем состояла в том, чтобы дать пустую итерацию в качестве аргумента одной из функций карты.

import multiprocessing
import numpy as np
import pandas as pd

def test(df):
    print(df['ELEM'].iloc[0])

filename = "ABC.xlsx"     

df = pd.read_excel(filename, index_col=None, header=0) # (135, 28) DataFrame

p = multiprocessing.cpu_count()-1 # = 3 

splitted = np.array_split(df, p) # 3 * (45, 28) DataFrames

pool = multiprocessing.Pool(processes=p)

processs = [(splitted_df_pi) for splitted_df_pi in splitted] # 3 * (45, 28) DataFrames

result = pool.map_async(test, processs)
pool.close()
pool.join()

Я ожидаю, что процесс не будет продолжаться вечно.Однако, похоже, что так и есть.Я не совсем уверен, где искать или как добраться до источника этой проблемы.Я надеюсь, что кто-то может пролить свет на это, спасибо заранее.

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