如何将列表的迭代索引传递到多处理池调用的函数中?



我正在处理一个文件,将其分割成多个数据帧,然后将它们放入池中。对于每个子数据帧,我需要创建一个以迭代索引作为文件后缀的输出文件,如下所示:

import numpy as np
df = pd.read_csv(input_file, encoding='utf8')
dfs = np.split(df, [chunk_size])

process_pool = Pool(multiprocessing.cpu_count())
process_pool.starmap(process_df, zip(dfs, repeat(data_file), repeat(data_path)))
def process_df(df, data_file, data_path):
...
output_file_name = data_path  + modified_data_file + str(idx) + '.csv'

在上面的代码中,这里显示的"idx"是当不使用多处理:

for idx, df in dfs:
...
output_file_name = data_path  + modified_data_file + str(idx) + '.csv'
在这种情况下,当使用多处理时,是否有一种方法可以访问每个文件的迭代索引?似乎文件/数据框架的迭代索引是不可见的。

您可以将zip改为:

zip(dfs, repeat(...), repeat(...), itertools.count())

你的process_df现在有了第四个索引参数,你可以随意使用。

= = = = =

编辑。count()与counter()输入错误。

最新更新