julia - `@static` 什么时候运行?

标签 julia precompile

@static expr是一种只运行 expr 的方法一次;
对于某种意义上的一次。
但一次又是什么感觉?

是吗:

  • 每次安装软件包一次?
  • 每次加载包一次?
  • 一些其他定义

  • 最常见的用途是用于操作系统检查:例如ccall((@static Sys.iswindows() ? :_fopen : :fopen), ...)
    我想知道是否可以使用它根据环境变量生成不同的代码:特别是 JULIA_NUM_THREADS .
    这个环境变量可以在 julia 的运行之间改变,
    但如果它在 session 期间发生变化,则不会对其作出 react 。

    最佳答案

    它在解析时运行(从技术上讲,它在解析时间之后运行,当宏展开时)。如果在启用了预编译(默认)的包中使用,那么它将在第一次加载时进行评估(即当您看到消息“INFO:预编译模块...”时)。

    所以不,你不能用它来根据环境变量生成不同的代码,除非你明确地使用 __precompile__(false) 在模块之外(但是您将有更长的加载时间)。

    关于julia - `@static` 什么时候运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48089293/

    相关文章:

    ruby-on-rails - Rails 3.1.1 Assets 预编译 - rake 中止

    c - 如何获取代码块中的预编译源代码?

    c++ - 预编译的多维数组访问

    function - Julia 模块调用用户定义函数

    plot - 如何在 Julia 中绘制带有错误栏的函数

    optimization - 在 Julia 中使用导入的 Scipy 函数时出现语法错误

    database - 数据框到数据库表

    Julia - 如何在 Julia 版本 0.6.4 中更新 WinRPM

    eclipse - 是否可以将jsp预编译到eclipse中?

    regex - 在 Perl 中使用预编译正则表达式时的问题