我一直在尝试并行化我的代码,并花了一些时间研究 Dask、Pandarallel,但由于某种原因它们没有工作,所以我现在正在考虑实施 concurrent.futures。
这就是我的问题陈述:
1)def do_stuff( (self.param1, self.param2) , abs(self.param3)):
value = self.param1, self.param2 的多步方程, self.param3(每行需要 2-5 分钟)
返回值。2)df['value'] = df.apply(lambda 行:do_stuff((self.param1, self.param2) , abs(self.param3)) , 轴 =1)
由于我的 df 有超过 1500 行,并且每行需要大约 2 分钟来处理单个内核,我相信我会从多处理中受益。我开始了解 pool 和 ProcessPoolExecutor 是如何工作的,但我仍然停留在如何将 df.apply 与多处理一起使用的语法上。我在网上浏览了示例,但找不到任何使用数据框处理应用功能的示例。
with ThreadPoolExecutor(max_workers=1) as executor:
future = executor.submit(pow, 323, 1235) ------> modify this line to process a df.apply
write back the result to a df.
有人可以用简单的语法帮助我或指出正确的方向吗?非常感谢!