【发布时间】:2021-06-28 13:47:02
【问题描述】:
我将 Python 与一个库一起使用,该库使用 cppyy 在 Python 中本地访问大量 C++ 函数。但是,对cppyy 方法的调用需要花费大量时间,并且在 Python 中循环调用库意味着开销成为一个严重的问题。这是我的意思的一个例子:
import ROOT # Library based on cppyy
def some_function():
for i in range(10_000_000):
ROOT.some_method(i) # A little bit of overhead * 10_000_000 is a lot of overhead
如果我直接在 C++ 中使用 ROOT 库,这段代码会非常快,但 Python 真的很慢。
有没有办法 JIT 编译它以快速运行,其中编译版本不使用 Python 运行时(如numbanopython=True)?
【问题讨论】:
-
你确定这个简单的循环是性能瓶颈吗?无论如何,您是否尝试使用
numba?也可以从cppyy包装器中提取实际函数指针,创建一个ctypes函数,如果numba可以自己完成,则该函数由numba集成。
标签: python performance jit numba