我有一项任务,需要在许多不同的熊猫数据帧上运行相同的功能。我将所有数据帧加载到列表中,然后将其传递给Pool.map
使用multiprocessing
模块。功能代码本身已被尽可能地矢量化,包含一些if / else子句,并且没有矩阵运算。
我目前使用的是10核xeon,希望加快速度,最好从传递Pool(10)
到Pool(xxx)
。我看到两种可能性:
GPU处理。从我所阅读的内容中,我不确定是否可以实现我想要的目标,无论如何都需要大量的代码修改。
至强皮 我知道它已经停产了,但是据说代码修改更容易,如果真的是这样,我很乐意得到一个。
我应该专注于哪条路?还有其他选择吗?
软体:Ubuntu 18.04,Python 3.7。硬件:X99芯片组,10核xeon(无HT)
您可以依靠新的Intel 2066平台或Xeon。使用最新的AVX512,它们大大加快了numpy的处理速度(numpy是熊猫的基础)。检查:https : //software.intel.com/zh-cn/articles/the-inside-scoop-on-how-we-accelerated-numpy-umath-functions
首先,尝试切换到基于numpy的计算(即使系列中使用简单的.value),也可以将处理速度提高10倍
您也可以尝试获得2个CPU主板,并获得更多的并行度进行计算。
在大多数情况下,瓶颈不是数据的处理,而是IO操作-从驱动器读取到内存。这也是使用GPU的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句