并行代码运行时如何生成并保存两个独立CSV文件?
修改多进程代码生成两个独立CSV文件
下面是调整后的完整代码,实现每次迭代返回两个DataFrame,最终分别合并并保存为独立CSV:
import pandas as pd import os import multiprocessing def single_iteration(iter:int): some_parameters = 100 data1, data2, data3, data4 = do_something() # 分别收集两组列的数据 df1_data = [] df2_data = [] for i in range(100): # 拆分数据到两个字典 df1_row = {'Col1': data1, 'Col2': data2} df2_row = {'Col3': data3, 'Col4': data4} df1_data.append(df1_row) df2_data.append(df2_row) # 生成两个DataFrame并返回 df1 = pd.DataFrame(df1_data) df2 = pd.DataFrame(df2_data) return df1, df2 if __name__ == "__main__": run_stop = 100 number_of_cores = int(os.environ['SLURM_CPUS_PER_TASK']) with multiprocessing.Pool(number_of_cores) as pool: # 每个进程返回 (df1, df2) 元组,results是元组列表 results = pool.map(single_iteration, range(run_stop)) # 拆分结果,分别收集所有df1和df2 all_df1 = [res[0] for res in results] all_df2 = [res[1] for res in results] # 分别合并并保存为CSV combined_df1 = pd.concat(all_df1, ignore_index=True) combined_df2 = pd.concat(all_df2, ignore_index=True) # 替换为你的实际路径和文件名 combined_df1.to_csv("path/to/df1_output.csv", index=False) combined_df2.to_csv("path/to/df2_output.csv", index=False)
关键改动说明:
- 函数返回值调整:
single_iteration不再返回单个DataFrame,而是返回包含两个DataFrame的元组,对应你需要的两组列。 - 数据拆分收集:在循环中分别构建两组列的行数据,避免后续拆分原DataFrame的额外开销。
- 结果拆分合并:主进程中将多进程返回的元组列表拆分为两个独立的DataFrame列表,再分别执行
concat合并,最后保存为两个独立的CSV文件。 - 修正原代码小问题:原代码中
Col2错误使用了data1,调整为需求中的data2。
内容的提问来源于stack exchange,提问作者Deep
相关产品推荐
相关产品推荐

