我想按操作执行一组操作,并为每个组估计一个线性模型。
编写一个函数然后使用 for 循环很容易,但是有点慢。
这是一个玩具示例,但它确实达到了目的。在您看来,实现并行化的“最佳”方式是什么?
一个直观的例子:
C
在这种特殊情况下,我使用 'sleep' 模块来减慢证明 for 循环将花费大量时间的速度,特别是如果我们将按大量独特的类别进行分组。
答案 0 :(得分:0)
您可以按照@JérômeRichard 的建议使用 multiprocessing
模块以及与 Pool.starmap
一起使用的 groupby
import pandas as pd
import multiprocessing
def regression_model(keys, df):
print(f'Pool: {keys}')
# do stuff here
return df
if __name__ == '__main__':
data = []
with multiprocessing.Pool(multiprocessing.cpu_count()) as pool:
data = pool.starmap(regression_model, df.groupby('day'))
df2 = pd.concat(data)