Моя многопоточная операция зависает при вызове метода 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()
Я ожидаю, что процесс не будет продолжаться вечно.Однако, похоже, что так и есть.Я не совсем уверен, где искать или как добраться до источника этой проблемы.Я надеюсь, что кто-то может пролить свет на это, спасибо заранее.