如何使用特定库通过 PyJulia 创建 Julia 的系统映像?

How to create an sysimage of Julia through PyJulia with a specific library?

python3 -m julia.sysimage sys_py.so构建镜像。

但是当将此图像应用到文件时,我没有观察到任何加速。这很可能是因为我的图书馆不在图像中。如何解决?

例如我的主要 Julia 文件 main.jl

using DifferentialEquations

a = solve(
    ODEProblem((x, p, t) -> 4.0, 1.0, (0.50 - 0.50, 0.50)),
    BS3(),
    abstol = 1e-8,
)(
    0.50,
)
println(a)

在 12.5 秒内由 julia main.jl 执行。

我在 Julia 本人的帮助下为他创建了一个图像:

using PackageCompiler
create_sysimage(
    ["DifferentialEquations"],
    sysimage_path = "sysimage.so",
    precompile_execution_file = "main.jl",
)

在这种情况下,通过 julia --sysimage sysimage.so 命令的执行时间为 1.5 秒。也就是说,图像有效。

如果我用 PyJulia 编写 运行 它,那么它执行所有相同的 12.5 秒。

from julia import Main as jl


jl.eval("using DifferentialEquations")

result = jl.eval("""
    a = solve(
        ODEProblem((x, p, t) -> 4.0, 1.0, (0.50 - 0.50, 0.50)),
        BS3(),
        abstol = 1e-8,
        )(
        0.50,
    )
    """
)
print(result)

如果我在 python3 -m julia.sysimage sys.so 命令的帮助下使用 PyJulia 生成图像,那么所有这些都被撕毁并且无济于事。代码在 12.5 秒内执行。我的代码:

from julia.api import LibJulia

api = LibJulia.load()
api.sysimage = "sys_py.so"
api.init_julia()

from julia import Main as jl


jl.eval("using DifferentialEquations")

result = jl.eval("""
    a = solve(
        ODEProblem((x, p, t) -> 4.0, 1.0, (0.50 - 0.50, 0.50)),
        BS3(),
        abstol = 1e-8,
        )(
        0.50,
    )
    """
)
print(result)

我想快速导入 DifferentialEquations 库。我如何使用 PyJulia 实现此目的?

我无法启动 PyJulya。

但我发现了一个有趣的 JuliaCall 库。

还没有实现系统镜像的对接,不过这也没什么大不了的

我把PackageCompiler生成的系统镜像简单复制替换成了默认的系统镜像

我用的是docker,所以不用担心系统Julia的变化。 在这种情况下,python 库工作得很好。

但是,不要在此图像中放置 python调用库。

突然间它会帮助某人。