Est-il possible de stocker un objet Networkx Graph dans un objet CBOR (sérialiser les données via CBOR)? J'ai des graphes NetworkX assez volumineux et j'ai besoin de sérialiser et de stocker pour d'autres analyses. Pickle semble trop lent et crée trop de fichier. Je ne vois pas assez de documentation sur CBOR pour déterminer correctement si ma tâche est possible.Python - CBOR avec le graphe NetworkX
0
A
Répondre
1
Je ne connais pas les performances de CBOR. D'après ce que j'ai lu, il semble être très efficace avec JSON. J'ai donc testé la sérialisation et cela fonctionne parfaitement:
from networkx.readwrite import json_graph
import cbor
G = nx.Graph()
G.add_weighted_edges_from([('a1', 'a2', 1.0), ('a2', 'a3', 0.5),
('a3', 'a5', 1.0), ('a4', 'a8', 1.0), ('a8', 'a9', 0.8)])
# Serialize graph
res = json_graph.node_link_data(G) # export Networkx to JSON
serialized = cbor.dumps(res) # serialize in binary format
deserialized = cbor.loads(serialized) # deserialize
H = json_graph.node_link_graph(deserialized) # Get back to original graph