我在我的 virtualenv 中新安装了 pyarrow 库。
我第一次
import pyarrow as pa
花了很长时间。
然后,导入后,我第一次实例化一个
Table
需要很长时间。然而,随后的表实例化速度快如闪电。
如果我退出 python shell 并重新打开它...现在 pyarrow 导入也很快,并且第一次实例化也很快。
我认为这是因为第一次导入模块时必须编译东西,但是一旦它们缓存在我的 venv 中就完成了。
我可以看到 在 src 中有大量 .pyx 和 .pyd 文件,我相信它们是 Cython。
我想使用 pyarrow 部署应用程序,无论是作为 AWS Lambda 函数还是在 Docker 容器中。
因此,我想确保在运行应用程序之前,该库已完全预编译,已经在部署的工件中。我怎样才能实现这个目标?
这些 pyx/pyd 文件是在安装时编译的(如果您是从二进制轮安装,则在安装之前编译)。调用
import pyarrow
不会进行任何 cython 编译。
第二次更快的原因是因为第一次创建了一些pycache,或者因为第二次操作系统更快地读取了所有不同的文件。
您可以尝试将
RUN python -c "import pyarrow;pyarrow.table({})
添加到您的 Dockerfile,但我怀疑它在运行时会有帮助。