copy_reg如何保存reduce / rebuild函数

时间:2015-08-26 23:58:06

标签: python pickle

假设我使用copy_reg.pickle注册reduce函数,如下所示。

import copy_reg, copy, pickle

some_global_variable = 10

class C(object):
  def __init__(self, a):
    self.a = a
    self.b = some_global_variable

def unpickle_c(a):
  c = C(a)
  c.b = some_global_variable

def pickle_c(c):
  return unpickle_c, (c.a,)

copy_reg.pickle(C, pickle_c)

我有几个问题:

  1. 函数unpickle_c是否保存为序列化对象并在unpickling时调用?如果这是真的,是否意味着我无法访问函数之外的状态,例如some_global_variable函数中的unpickle_c?或者全局变量是否也将保存为序列化函数对象的一部分?

  2. 如果上述情况不属实,unpickle_c是否保存为某个标识符,并且只需定位该函数并在unpickling时调用该函数?如果这是真的,这是否意味着,如果包含unpickle_c的模块在unpickling时尚未导入,它将被导入?

0 个答案:

没有答案