我有一个任务,需要在许多不同的 pandas 数据帧上运行相同的函数。我将所有数据帧加载到一个列表中,然后使用 multiprocessing
模块将其传递给 Pool.map
。函数代码本身已尽可能矢量化,包含一些 if/else 子句,并且没有矩阵运算。
我目前使用的是 10 核至强处理器,希望加快速度,最好是从 Pool(10)
传递到 Pool(xxx)
。我看到两种可能性:
GPU 处理。从我读到的内容来看,我不确定是否能实现我想要的目标,并且无论如何都需要大量代码修改。
至强融核。我知道它已经停产,但据说代码改编更容易,如果确实如此,我很乐意得到一个。
我应该专注于哪条路?还有其他选择吗?
软件:Ubuntu 18.04、Python 3.7。硬件:X99芯片组,10核至强(无HT)
最佳答案
花了一段时间,但在将其全部更改为 numpy 并实现更多矢量化后,我成功地将速度提高了 20 倍以上 - 所以感谢 Paul。 max9111 也谢谢,我会研究一下 numba。
关于python - python 多处理硬件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55576373/