提交 cd984010 authored 作者: James Bergstra's avatar James Bergstra

use numpy.dumps() to pickle function parameters

上级 9f85a888
...@@ -319,11 +319,23 @@ def _pickle_Function(f): ...@@ -319,11 +319,23 @@ def _pickle_Function(f):
else: else:
defaults.append(ins[0]) defaults.append(ins[0])
del ins[0] del ins[0]
return (_constructor_Function, (f.maker, defaults, [x.data for x in f.input_storage]))
def numpysucks(obj):
#this is to workaround a finding that cPickle.dumps(a) is often much bigger than
# a.dumps() --JB:20090202
if type(obj) is numpy.ndarray:
return ('__numpysucks__', obj.dumps())
else:
return obj
return (_constructor_Function, (f.maker, defaults, [numpysucks(x.data) for x in f.input_storage]))
def _constructor_Function(maker, defaults, data): def _constructor_Function(maker, defaults, data):
f = maker.create(defaults, trustme = True) f = maker.create(defaults, trustme = True)
assert len(f.input_storage) == len(data)
for container, x in zip(f.input_storage, data): for container, x in zip(f.input_storage, data):
if type(x) is tuple and len(x) == 2 and x[0] == '__numpysucks__':
container.data = numpy.loads(x[1])
else:
container.data = x container.data = x
return f return f
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论