#serialization #reflection #julia #metaprogramming #code-generation
Вопрос:
В Джулии, как можно сгенерировать произвольный код, чтобы сериализовать его в файл для будущего выполнения в совершенно другом экземпляре программы? Возможно ли это вообще? Есть ли необходимость хранить какой-либо текущий контекст для будущего выполнения?
Ответ №1:
Я думаю, что вы ищете PackageCompiler.jl (https://github.com/JuliaLang/PackageCompiler.jl)
Ответ №2:
Вот более подробный ответ
- Поместите свой код в пакет Julia. Это то, что вы должны делать с любым производственным кодом — это намного удобнее. Пусть говорят, что это так
MyPackage
- Создайте сценарий, который запускает все методы в пакете с типами, которые вы планируете использовать, чтобы компилятор знал, какую версию этих методов компилировать. Давайте назовем это
precompile_MyPackage.jl
. Вы можете использовать команды/сценарии, которые вы используете регулярно, а также, возможно, наборы тестовMyPackage
. - Скомпилируйте пакет с помощью
PackageCompiler
using PackageCompiler
create_sysimage(:MyPackage, sysimage_path="sys_MyPackage.so", precompile_execution_file="precompile_MyPackage.jl")
- После этого вы начнете Джулию со следующей команды:
julia --sysimage sys_MyPackage.so
Наконец, пожалуйста, взгляните на отличное обучающее видео https://live.juliacon.org/talk/Z8TE39