Serialization Julia:在运行时生成代码,并将其存储起来,以备将来评估/执行

Serialization Julia:在运行时生成代码,并将其存储起来,以备将来评估/执行,serialization,reflection,julia,metaprogramming,code-generation,Serialization,Reflection,Julia,Metaprogramming,Code Generation,在Julia中,如何生成任意代码将其序列化为文件,以便在完全不同的程序实例下执行?有可能吗?是否需要存储任何当前上下文以供将来执行?我想您正在寻找PackageCompiler.jl()以下是更详细的答案 将代码放入Julia包中。这是任何生产代码都应该做的事情——它非常方便。假设它是MyPackage 创建一个脚本,该脚本使用您计划使用的类型运行包中的所有方法,以便编译器知道要编译这些方法的哪个版本。让我们称之为precompile\u MyPackage.jl。您可以使用定期使用的命令/场

在Julia中,如何生成任意代码将其序列化为文件,以便在完全不同的程序实例下执行?有可能吗?是否需要存储任何当前上下文以供将来执行?

我想您正在寻找PackageCompiler.jl()

以下是更详细的答案

  • 将代码放入Julia包中。这是任何生产代码都应该做的事情——它非常方便。假设它是
    MyPackage

  • 创建一个脚本,该脚本使用您计划使用的类型运行包中的所有方法,以便编译器知道要编译这些方法的哪个版本。让我们称之为
    precompile\u MyPackage.jl
    。您可以使用定期使用的命令/场景,还可以使用
    MyPackage
    中的测试集

  • 使用
    PackageCompiler

  • 完成后,您将使用以下命令启动Julia:
  • 最后,请看一看精彩的教程视频

    using PackageCompiler
    create_sysimage(:MyPackage, sysimage_path="sys_MyPackage.so", precompile_execution_file="precompile_MyPackage.jl")
    
    julia --sysimage sys_MyPackage.so