有什么方法可以预编译pyarrow吗?

问题描述 投票:0回答:1

我在我的 virtualenv 中新安装了 pyarrow 库。

我第一次

import pyarrow as pa
花了很长时间。

然后,导入后,我第一次实例化一个

Table
需要很长时间。然而,随后的表实例化速度快如闪电。

如果我退出 python shell 并重新打开它...现在 pyarrow 导入也很快,并且第一次实例化也很快。

我认为这是因为第一次导入模块时必须编译东西,但是一旦它们缓存在我的 venv 中就完成了。

我可以看到 在 src 中有大量 .pyx 和 .pyd 文件,我相信它们是 Cython。

我想使用 pyarrow 部署应用程序,无论是作为 AWS Lambda 函数还是在 Docker 容器中。

因此,我想确保在运行应用程序之前,该库已完全预编译,已经在部署的工件中。我怎样才能实现这个目标?

cython pyarrow
1个回答
0
投票

这些 pyx/pyd 文件是在安装时编译的(如果您是从二进制轮安装,则在安装之前编译)。调用

import pyarrow
不会进行任何 cython 编译。

第二次更快的原因是因为第一次创建了一些pycache,或者因为第二次操作系统更快地读取了所有不同的文件。

您可以尝试将

RUN python -c "import pyarrow;pyarrow.table({})
添加到您的 Dockerfile,但我怀疑它在运行时会有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.