web-dev-qa-db-fra.com

Partager des variables entre différents cahiers jupyter

J'ai deux blocs-notes Jupyter différents, fonctionnant sur le même serveur. Ce que je voudrais faire, c'est accéder à certaines (seulement quelques-unes) des variables d'un ordinateur portable à l'autre ordinateur portable (je dois comparer si les deux versions différentes de l'algorithme donnent les mêmes résultats, fondamentalement). Y a-t-il un moyen de faire cela?

Merci

28
user22710

Entre 2 cahiers jupyter, vous pouvez utiliser la commande% store.

Dans le premier cahier jupyter:

data = 'string or data-table to pass'
%store data
del data

Dans le deuxième cahier jupyter:

%store -r data
data

Vous pouvez trouver plus d'informations sur ici .

36
chabir

Si vous avez seulement besoin de quelque chose de rapide et sale, vous pouvez utiliser le module pickle pour rendre les données persistantes (enregistrez-les dans un fichier) puis faites-les récupérer par votre autre ordinateur portable. Par exemple:

import pickle

a = ['test value','test value 2','test value 3']

# Choose a file name
file_name = "sharedfile"

# Open the file for writing
with open(file_name,'wb') as my_file_obj:
    pickle.dump(a,my_file_obj)   

# The file you have just saved can be opened in a different session
# (or iPython notebook) and the contents will be preserved.

# Now select the (same) file to open (e.g. in another notebook)
file_name = "sharedfile"
# Open the file for reading
file_object = open(file_Name,'r')  
# load the object from the file into var b
b = pickle.load(file_object)  

print(b)
>>> ['test value','test value 2','test value 3']
9
alfredoc

Vous pouvez utiliser le même magic commands pour ce faire. Cell magic: %%cache dans le bloc-notes IPython peut être utilisé pour mettre en cache les résultats et les sorties de calculs de longue durée dans un fichier pickle persistant. Utile lorsque certains calculs dans un cahier sont longs et que vous souhaitez enregistrer facilement les résultats dans un fichier.

Pour l'utiliser dans votre bloc-notes, vous devez d'abord installer le module ipycache car cette commande magique de cellule n'est pas une commande magique intégrée.

puis chargez le module dans votre cahier:

%load_ext ipycache

Ensuite, créez une cellule avec:

%%cache mycache.pkl var1 var2
var1 = 1  # you can put any code you want at there,
var2 = 2  # just make sure this cell is not empty.

Lorsque vous exécutez cette cellule la première fois, le code est exécuté et les variables var1 et var2 sont enregistrées dans mycache.pkl dans le répertoire en cours avec les sorties. Les sorties d'affichage riches ne sont enregistrées que si vous utilisez la version de développement d'IPython. Lorsque vous exécutez à nouveau cette cellule, le code est ignoré, les variables sont chargées à partir du fichier et injectées dans l'espace de noms et les sorties sont restaurées dans le bloc-notes.

Vous pouvez également utiliser $file_name au lieu de mycache.pkl, où nom_fichier est une variable contenant le chemin d'accès au fichier utilisé pour la mise en cache.

Utilisez le --force ou -f option pour forcer l'exécution de la cellule et écraser le fichier.

Utilisez le --read ou -r option pour empêcher l'exécution de la cellule et toujours charger les variables depuis le cache. Une exception est déclenchée si le fichier n'existe pas.

ref: Le dépôt github de ipycache et le exemple de cahier

2
hxysayhi