提交 7444fdd6 authored 作者: Frédéric Bastien's avatar Frédéric Bastien

Merge pull request #4362 from tete1030/master

Fix PersistentNdarrayLoad problem restoring same object multiple times
......@@ -275,10 +275,14 @@ class PersistentNdarrayLoad(object):
"""
def __init__(self, zip_file):
self.zip_file = zip_file
self.cache = {}
def __call__(self, persid):
array_type, name = persid.split('.')
if name in self.cache:
return self.cache[name]
ret = None
array = numpy.lib.format.read_array(self.zip_file.open(name))
if array_type == 'cuda_ndarray':
if config.experimental.unpickle_gpu_on_cpu:
......@@ -286,14 +290,16 @@ class PersistentNdarrayLoad(object):
warnings.warn("config.experimental.unpickle_gpu_on_cpu is set "
"to True. Unpickling CudaNdarray as "
"numpy.ndarray")
return array
ret = array
elif cuda_ndarray:
return cuda_ndarray.cuda_ndarray.CudaNdarray(array)
ret = cuda_ndarray.cuda_ndarray.CudaNdarray(array)
else:
raise ImportError("Cuda not found. Cannot unpickle "
"CudaNdarray")
else:
return array
ret = array
self.cache[name] = ret
return ret
def dump(obj, file_handler, protocol=DEFAULT_PROTOCOL,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论