我有一个函数说:
transform_data(input_df)
返回python数据帧
result_list = []
for input_df in list_of_dfs :
result_list.append(transform_data(input_df))
final_df = pd.concat(results_list)
代码正在 Azure数据块中运行,并且list_of_dfs中大约有10个工作节点和相同数量的输入文件。由于转换功能需要花费大量时间,而且对于每个输入df而言,以串行方式完成都不太可行,因此我想在数据块中的每个工作节点之间分配任务。即,将每个单独的工作程序节点用于单独的函数调用,以使整个过程可以并行发生。
该怎么做?
但是我尝试使用线程池,但这只能在数据块中以串行方式起作用,因为仅使用单个驱动程序/主节点。如何强制每个线程同时在不同的工作程序中运行?
if __name__ == '__main__':
pool = multiprocessing.pool.ThreadPool(len(list_of_dfs))
result_list= pool.map(transform_data, list_of_dfs )
pool.close()
pool.join()
final_df = pd.concat(result_list)