【问题标题】:Pandas read_csv with JIT Bodo is slower than regular Python带有 JIT Bodo 的 Pandas read_csv 比普通 Python 慢
【发布时间】:2023-02-01 07:02:44
【问题描述】:

我正在尝试使用 Bodo 来加速某些 Pandas 操作,第一个是 pd.read_csv(...)。 Bodo 要求兼容的 pandas 代码位于单独的函数中,与非 Bodo 兼容的代码分开。例如,这是我的代码:

与博多:

import bodo

@bodo.jit
def loadDataFileWithJIT(filePath):
    df = pd.read_csv(filePath, header=0, sep="\t", names=["patid", "eventdate", "prodcode", "consid", "issueseq"],
                       usecols=[0, 1, 3, 4, 12],
                       dtype={"patid": "str", "eventdate": "str", "prodcode": "str", "consid": "str", "issueseq": "str"},
                       low_memory=False)
    return df

这些时候我看到超过 5 个文件:

  • 14.24 <--- 第一次,所以这是 JIT 编译的时候
  • 9.67
  • 10.72
  • 9.51
  • 9.42

没有博多(函数装饰器和 import 语句已被删除......其他没有改变):

  • 4.66
  • 4.68
  • 4.59
  • 4.61
  • 4.60

每个文件大约 170MB。

更新

与 Bodo 的作者交谈后,我需要从 mpiexec -n #(其中 # 是核心数 > 1)运行 Python,如果我想看到加速的话。

【问题讨论】:

  • 也许将其发送给 bodo 的作者。

标签: python pandas


【解决方案1】:

TLDR:加速 I/O 操作需要并行性。您需要将 mpiexec 用于多个进程。

Bodo 目前在引擎盖下重用 pandas read_csv 以确保完全兼容。 JIT 编译支持并行性,但不会在单核上改进任何东西(事实上,正如您所观察到的那样,有一些开销)。

您可以使用 ipyparallel 在单个进程中启动和管理 Bodo/MPI 进程: https://github.com/ipython/ipyparallel

Bodo Slack 讨论: https://bodocommunity.slack.com/archives/C01KRTQ1KDY/p1661704632557289

【讨论】:

    猜你喜欢
    • 2014-02-24
    • 2017-02-17
    • 2020-02-29
    • 2017-12-22
    • 1970-01-01
    • 2021-04-18
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多