为什么我的多处理功能map_async被卡住?

时间:2019-04-16 11:20:36

标签: python multithreading parallel-processing multiprocessing threadpool

当使用拆分的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()

我希望这个过程不会永远持续下去。但是,似乎是。我不完全确定在哪里寻找问题或如何找到此问题的根源。我希望有人能对此有所启发,在此先感谢。

0 个答案:

没有答案