Serialization
Предоставляет сериализацию объектов Julia.
Serialization.serialize
— Functionserialize(stream::IO, value)
Запишите произвольное значение в поток в непрозрачном формате, чтобы его можно было прочитать обратно с помощью deserialize
. Прочитанное значение будет максимально идентично оригиналу, но имейте в виду, что значения Ptr
сериализуются как битовые шаблоны, состоящие из нулей (NULL
).
Сначала в поток записывается 8-байтовый идентифицирующий заголовок. Чтобы избежать записи заголовка, создайте Serializer
и используйте его в качестве первого аргумента для serialize
. См. также Serialization.writeheader
.
Формат данных может изменяться в незначительных (1.x) версиях Julia, но файлы, записанные предыдущими версиями 1.x, останутся читаемыми. Основное исключение из этого правила возникает, когда определение типа во внешнем пакете изменяется. Если это произойдет, может потребоваться указать явную совместимую версию затронутого пакета в вашей среде. Переименование функций, даже частных, внутри пакетов также может привести к несоответствию существующих файлов. Анонимные функции требуют особого внимания: поскольку их имена генерируются автоматически, незначительные изменения в коде могут привести к их переименованию. Сериализация анонимных функций должна быть избегнута в файлах, предназначенных для долгосрочного хранения.
В некоторых случаях размер слова (32 или 64 бита) читающих и записывающих машин должен совпадать. В более редких случаях также должны совпадать ОС или архитектура, например, при использовании пакетов, содержащих код, зависящий от платформы.
serialize(filename::AbstractString, value)
Откройте файл и сериализуйте данное значение в него.
Этот метод доступен начиная с Julia 1.1.
Serialization.deserialize
— Functiondeserialize(stream)
Читает значение, записанное с помощью serialize
. deserialize
предполагает, что двоичные данные, прочитанные из stream
, корректны и были сериализованы совместимой реализацией serialize
. deserialize
разработан для простоты и производительности, поэтому не проверяет данные, прочитанные из потока. Неправильные данные могут привести к завершению процесса. Вызывающий должен обеспечить целостность и корректность данных, прочитанных из stream
.
deserialize(filename::AbstractString)
Откройте файл и десериализуйте его содержимое.
Этот метод доступен начиная с Julia 1.1.
Serialization.writeheader
— FunctionSerialization.writeheader(s::AbstractSerializer)
Запишите идентифицирующий заголовок в указанный сериализатор. Заголовок состоит из 8 байт, как указано ниже:
Смещение | Описание |
---|---|
0 | байт тега (0x37) |
1-2 | байты подписи "JL" |
3 | версия протокола |
4 | биты 0-1: порядок байтов: 0 = малый, 1 = большой |
4 | биты 2-3: платформа: 0 = 32-бит, 1 = 64-бит |
5-7 | зарезервировано |