当使用拆分的DataFrame作为输入调用map_async方法时,我的多线程操作挂起。什么会导致此问题?
我试图查看分割后的DataFrame是否均匀大小是否重要。我也测试了Pool.map和Pool.map_sync。我的CPU在四个核心上大约占80%。此外,我研究了关于该主题的不同问题线程。问题之一是给一个map函数提供一个空的Iterable作为参数。
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()
我希望这个过程不会永远持续下去。但是,似乎是。我不完全确定在哪里寻找问题或如何找到此问题的根源。我希望有人能对此有所启发,在此先感谢。