【发布时间】:2017-01-10 03:10:52
【问题描述】:
熊猫新手,我已经想并行化逐行应用操作。到目前为止我找到了Parallelize apply after pandas groupby 但是,这似乎只适用于分组数据帧。
我的用例不同:我有一个假期列表,对于我当前的行/日期,我想查找这一天之前和之后到下一个假期的非天数。
这是我通过 apply 调用的函数:
def get_nearest_holiday(x, pivot):
nearestHoliday = min(x, key=lambda x: abs(x- pivot))
difference = abs(nearesHoliday - pivot)
return difference / np.timedelta64(1, 'D')
如何加快速度?
编辑
我对 pythons 池进行了一些实验 - 但它既不是很好的代码,也没有得到我的计算结果。
【问题讨论】:
-
"python 池" - 线程还是进程?
-
我使用的是 multiprocessing.Pool(processes= #ofCPU)
-
因此不能保证多处理可以加快您的代码速度,但是,由于代码不能正常工作,所以很难知道它在那里运行的是什么。您可能想对此提出问题(FWIW,这种方法对我来说似乎是您最好的选择)。
-
在应用并行化之前,cythonizing 不是一个好的第一步吗?
-
据我了解的问题是令人尴尬的并行,例如每一行都是独立的,所以应该更适合并行执行。
标签: python pandas parallel-processing apply embarrassingly-parallel