你能在 Python 的 julia 模块中预编译 Julia 脚本并在没有 Main.eval(*) 的情况下调用它们吗?

问题描述

我正在尝试使用 Python 调用 Julia 脚本,以在需要大量调用函数上获得更好的速度(对于某些 Monte Carlo 类型分析)。我已经通过以下方式在 python 中成功安装并运行了 Julia 脚本:

from julia import Main as JuliaMain  # julia().<something> --> is deprecated,use Main instead
# julia.install()  # use when running for the first time
script_julia = JuliaMain.include('juliascript.jl')

除了确保在 Julia 运行时中正确配置 PyCall 之外。

如果我错了,请纠正我,但根据我目前的理解,这将编译 juliascript.jl 中的任何函数,因为 Julia 会弄清楚返回类型是什么然后去通过它在您第一次调用和/或定义函数时所做的任何动作。

考虑juliascript.jl中定义的函数类似于:

function f(x,y)
    z = x + y
    return z
end

如果我用 x = JuliaMain.eval("f(1,3)") 调用这个函数,这个函数的速度会反映被多次调用的 Julia 函数,还是每次都被有效地“重新编译”? 此外,如何调用这些定义的函数而不必将我的请求转换为字符串呢?我知道 from the docs 可以直接设置和获取变量,但这看起来很笨拙,我希望有一种更优雅的方式,例如格式为 JuliaMain.f(x,y) 或 {{1} }等

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)