Совместное использование переменных между различными ноутбуками jupyter

У меня есть два разных ноутбука Jupyter, работающих на одном сервере. Я хотел бы сделать доступ к некоторым (только некоторым из них) из переменных одного ноутбука через другой ноутбук (мне нужно сравнить, если две разные версии алгоритма дают одинаковые результаты, в основном). Есть ли способ сделать это?

Спасибо

Ответ 1

Если вам нужно только что-то быстро, вы можете использовать модуль pickle, чтобы сделать данные постоянными (сохранить их на файл), а затем забрать его другим ноутбуком. Например:

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']

Ответ 2

Между 2 ноутбуками jupyter вы можете использовать команду% store.

В первой записной книжке Jupyter:

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

Во втором блокноте Jupyter:

%store -r data
data

Вы можете найти более подробную информацию здесь.

Ответ 3

Для этого вы можете использовать один и тот же magic commands. Cell magic: %%cache в ноутбуке IPython можно использовать для кэширования результатов и результатов длительных вычислений в постоянном файле pickle. Полезно, когда некоторые вычисления в ноутбуке длинны, и вы хотите легко сохранить результаты в файле.

Чтобы использовать его в своем ноутбуке, сначала необходимо установить модуль ipycache, так как эта волшебная команда Cell не является встроенной магической командой.

затем загрузите модуль в свой блокнот:

%load_ext ipycache

Затем создайте ячейку с помощью:

%%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.

Когда вы выполняете эту ячейку в первый раз, код выполняется, а переменные var1 и var2 сохраняются в mycache.pkl в текущем каталоге вместе с выводами. Богатые выходные данные отображаются только в том случае, если вы используете версию IPython для разработки. Когда вы снова выполняете эту ячейку, код пропускается, переменные загружаются из файла и вводятся в пространство имен, а выходы восстанавливаются в ноутбуке.

В качестве альтернативы используйте $file_name вместо mycache.pkl, где file_name - это переменная, содержащая путь к файлу, используемому для кеширования.

Используйте параметр --force или -f, чтобы принудительно выполнить выполнение ячейки и перезаписать файл.

Используйте параметр --read или -r, чтобы предотвратить выполнение ячейки и всегда загружать переменные из кеша. Исключение возникает, если файл не существует.

исх: Хранилище github ipycache и пример ноутбука