Serialization
Fournit la sérialisation des objets Julia.
Serialization.serialize
— Functionserialize(stream::IO, value)
Écrit une valeur arbitraire dans un flux dans un format opaque, de sorte qu'elle puisse être relue par deserialize
. La valeur relue sera aussi identique que possible à l'originale, mais notez que les valeurs Ptr
sont sérialisées sous forme de motifs de bits tous à zéro (NULL
).
Un en-tête d'identification de 8 octets est d'abord écrit dans le flux. Pour éviter d'écrire l'en-tête, construisez un Serializer
et utilisez-le comme premier argument de serialize
. Voir aussi Serialization.writeheader
.
Le format de données peut changer dans les versions mineures (1.x) de Julia, mais les fichiers écrits par des versions antérieures à 1.x resteront lisibles. La principale exception à cela est lorsque la définition d'un type dans un package externe change. Si cela se produit, il peut être nécessaire de spécifier une version compatible explicite du package concerné dans votre environnement. Renommer des fonctions, même des fonctions privées, à l'intérieur des packages peut également désynchroniser les fichiers existants. Les fonctions anonymes nécessitent une attention particulière : parce que leurs noms sont générés automatiquement, de mineurs changements de code peuvent les renommer. La sérialisation de fonctions anonymes doit être évitée dans les fichiers destinés à un stockage à long terme.
Dans certains cas, la taille des mots (32 ou 64 bits) des machines de lecture et d'écriture doit correspondre. Dans des cas plus rares, le système d'exploitation ou l'architecture doit également correspondre, par exemple lors de l'utilisation de packages contenant du code dépendant de la plateforme.
serialize(filename::AbstractString, value)
Ouvrez un fichier et sérialisez la valeur donnée dans celui-ci.
Cette méthode est disponible depuis Julia 1.1.
Serialization.deserialize
— Functiondésérialiser(stream)
Lire une valeur écrite par sérialiser
. désérialiser
suppose que les données binaires lues depuis stream
sont correctes et ont été sérialisées par une implémentation compatible de sérialiser
. désérialiser
est conçu pour la simplicité et la performance, et ne valide donc pas les données lues. Des données malformées peuvent entraîner l'arrêt du processus. L'appelant doit garantir l'intégrité et la justesse des données lues depuis stream
.
désérialiser(nom_fichier::AbstractString)
Ouvre un fichier et désérialise son contenu.
Cette méthode est disponible depuis Julia 1.1.
Serialization.writeheader
— FunctionSerialization.writeheader(s::AbstractSerializer)
Écrit un en-tête d'identification dans le sérialiseur spécifié. L'en-tête se compose de 8 octets comme suit :
Décalage | Description |
---|---|
0 | octet de balise (0x37) |
1-2 | octets de signature "JL" |
3 | version du protocole |
4 | bits 0-1 : ordre des octets : 0 = petit, 1 = grand |
4 | bits 2-3 : plateforme : 0 = 32 bits, 1 = 64 bits |
5-7 | réservé |