Python/python 使用 concurrent.futures 多进程注意事项

Python/python 使用 concurrent.futures 多进程注意事项

线程池和进程池

concurrent.futures 是 Python3.2 加入标准库的一个模块,它提供异步执行回调高层接口,是对线程池和进程池的进一步封装,让开发者可以使用统一的接口非常容易的使用线程池和进程池。

这个模块中有两个核心的类:ThreadPoolExecutor (线程池)和ProcessPoolExecutor(进程池)。

阅读更多
Python/使用多进程处理 DataFrame

Python/使用多进程处理 DataFrame

基本思路是,将DataFrame拆成若干组分,最后通过pandas.concat合并起结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def parallelize_dataframe(df, func, n_jobs=3, split_num=10):
## 拆分数据表
df_split = np.array_split(df, split_num)
pool = Pool(n_jobs)
df_list = []

## map操作
for df_element in tqdm_notebook(pool.imap(func, df_split), total=10000):
df_list.append(df_element)

## reduce操作
df = pd.concat(df_list)

## 关闭进程
pool.close()
pool.join()
return df

还可以使用tqdm在处理数据时显示进度条。