微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决你能在 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 举报,一经查实,本站将立刻删除。