【问题标题】:Using dill to save current state of jupyter notebook使用 dill 保存 jupyter notebook 的当前状态
【发布时间】:2020-08-31 17:04:27
【问题描述】:

我看到很多回答说使用 dill 来保存内核的当前状态;

import dill
# save
dill.dump_session('notebook_env.db')

# load
dill.load_session('notebook_env.db')

现在,这是什么notebook_env.db?它是我的.ipynb 文件的路径吗?

【问题讨论】:

    标签: jupyter-notebook jupyter pickle dill


    【解决方案1】:

    我是dill 作者。我通常会使用 .'pkl 扩展名而不是 .db... 但它是一个泡菜文件。基本上笔记本中的所有对象都被序列化(转换为字符串),然后存储在一个文件中。

    序列化是这样工作的:

    >>> import dill
    >>> class Foo(object):
    ...   def __init__(self, x):
    ...     self.x = x
    ...   def bar(self, y):
    ...     return self.x + y
    ... 
    >>> f = Foo(4)
    >>> _f = dill.dumps(f)
    >>> _f
    b'\x80\x03cdill._dill\n_create_type\nq\x00(cdill._dill\n_load_type\nq\x01X\x04\x00\x00\x00typeq\x02\x85q\x03Rq\x04X\x03\x00\x00\x00Fooq\x05h\x01X\x06\x00\x00\x00objectq\x06\x85q\x07Rq\x08\x85q\t}q\n(X\n\x00\x00\x00__module__q\x0bX\x08\x00\x00\x00__main__q\x0cX\x08\x00\x00\x00__init__q\rcdill._dill\n_create_function\nq\x0e(cdill._dill\n_create_code\nq\x0f(K\x02K\x00K\x02K\x02KCC\n|\x01|\x00_\x00d\x00S\x00q\x10N\x85q\x11X\x01\x00\x00\x00xq\x12\x85q\x13X\x04\x00\x00\x00selfq\x14h\x12\x86q\x15X\x07\x00\x00\x00<stdin>q\x16h\rK\x02C\x02\x00\x01q\x17))tq\x18Rq\x19c__builtin__\n__main__\nh\rNN}q\x1aNtq\x1bRq\x1cX\x03\x00\x00\x00barq\x1dh\x0e(h\x0f(K\x02K\x00K\x02K\x02KCC\n|\x00j\x00|\x01\x17\x00S\x00q\x1eN\x85q\x1fh\x12\x85q h\x14X\x01\x00\x00\x00yq!\x86q"h\x16h\x1dK\x04C\x02\x00\x01q#))tq$Rq%c__builtin__\n__main__\nh\x1dNN}q&Ntq\'Rq(X\x07\x00\x00\x00__doc__q)NX\r\x00\x00\x00__slotnames__q*]q+utq,Rq-)\x81q.}q/h\x12K\x04sb.'
    >>> del f         
    >>> del Foo
    >>> f = dill.loads(_f)
    >>> f.bar(3)
    7
    >>> 
    

    对于简单的对象,您可以开始了解将对象的唯一编码转换为字符串是如何工作的。例如,很容易找出与下面序列中包含的整数对应的内容,并且序列化元组给出的字符串与列表略有不同。

    >>> dill.dumps([1,2,3])
    b'\x80\x03]q\x00(K\x01K\x02K\x03e.'
    >>> dill.dumps([1,2,3,4,5])
    b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04K\x05e.'
    >>> dill.dumps((1,2,3,4,5))
    b'\x80\x03(K\x01K\x02K\x03K\x04K\x05tq\x00.'
    >>> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2013-09-04
      • 1970-01-01
      相关资源
      最近更新 更多