python 多处理硬件

Hardware for python multiprocessing

我有一个任务需要在许多不同的 pandas 数据帧上 运行 相同的函数。我将所有数据帧加载到一个列表中,然后使用 multiprocessing 模块将其传递给 Pool.map。函数代码本身已尽可能向量化,包含一些 if/else 子句并且没有矩阵运算。

我目前使用的是 10 核至强处理器,希望加快速度,最好从 Pool(10) 升级到 Pool(xxx)。我看到两种可能性:

我应该专注于哪条道路?还有其他选择吗?

软件:Ubuntu18.04,Python3.7。硬件:X99 芯片组,10 核 xeon(无 HT)

您可以依赖新的 Intel 2066 平台或 Xeon。使用最新的 AVX512,他们大大加快了 numpy 的处理速度(numpy 是 pandas 的基础)。检查:https://software.intel.com/en-us/articles/the-inside-scoop-on-how-we-accelerated-numpy-umath-functions

首先,尝试切换到基于 numpy 的计算(即使在系列上使用简单的 .values),它可以将处理速度提高 10 倍

你也可以尝试入手2块CPU主板,获得更多的并行计算能力。

在大多数情况下,瓶颈不是数据的处理,而是IO操作——从驱动器读取到内存。这也将是使用 GPU 的问题。

花了一段时间,但在将其全部更改为 numpy 并实现更多矢量化后,我设法将速度提高了 20 倍以上 - 感谢 Paul。 max9111 也谢谢,我会看看 numba。