提交 148350b9 authored 作者: Frederic's avatar Frederic

Allow to print only up to depth=X the optimization in an optimizer.

上级 9fcaf28d
...@@ -85,7 +85,7 @@ class Optimizer(object): ...@@ -85,7 +85,7 @@ class Optimizer(object):
""" """
pass pass
def print_summary(self, stream=sys.stdout, level=0): def print_summary(self, stream=sys.stdout, level=0, depth=-1):
name = getattr(self, 'name', None) name = getattr(self, 'name', None)
print >> stream, "%s%s %s id=%i" %(' '*level, self.__class__.__name__, print >> stream, "%s%s %s id=%i" %(' '*level, self.__class__.__name__,
name, id(self)) name, id(self))
...@@ -99,7 +99,7 @@ class FromFunctionOptimizer(Optimizer): ...@@ -99,7 +99,7 @@ class FromFunctionOptimizer(Optimizer):
#env.extend(toolbox.ReplaceValidate()) #env.extend(toolbox.ReplaceValidate())
pass pass
def print_summary(self, stream=sys.stdout, level=0): def print_summary(self, stream=sys.stdout, level=0, depth=-1):
print >> stream, "%s%s id=%i" %(' '*level, print >> stream, "%s%s id=%i" %(' '*level,
str(self.apply), str(self.apply),
id(self)) id(self))
...@@ -192,11 +192,14 @@ class SeqOptimizer(Optimizer, list): ...@@ -192,11 +192,14 @@ class SeqOptimizer(Optimizer, list):
def __repr__(self): def __repr__(self):
return list.__repr__(self) return list.__repr__(self)
def print_summary(self, stream=sys.stdout, level=0): def print_summary(self, stream=sys.stdout, level=0, depth=-1):
name = getattr(self, 'name', None) name = getattr(self, 'name', None)
print >> stream, "%s%s %s id=%i" %(' '*level, self.__class__.__name__, name, id(self)) print >> stream, "%s%s %s id=%i" %(' '*level, self.__class__.__name__, name, id(self))
# This way, -1 will do all depth
if depth != 0:
depth -= 1
for opt in self: for opt in self:
opt.print_summary(stream, level=level+2) opt.print_summary(stream, level=level+2, depth=depth)
...@@ -433,7 +436,7 @@ class LocalOptimizer(object): ...@@ -433,7 +436,7 @@ class LocalOptimizer(object):
#env.extend(toolbox.ReplaceValidate()) #env.extend(toolbox.ReplaceValidate())
pass pass
def print_summary(self, stream=sys.stdout, level=0): def print_summary(self, stream=sys.stdout, level=0, depth=-1):
print >> stream, "%s%s id=%i" %(' '*level, self.__class__.__name__, id(self)) print >> stream, "%s%s id=%i" %(' '*level, self.__class__.__name__, id(self))
class FromFunctionLocalOptimizer(LocalOptimizer): class FromFunctionLocalOptimizer(LocalOptimizer):
...@@ -445,7 +448,7 @@ class FromFunctionLocalOptimizer(LocalOptimizer): ...@@ -445,7 +448,7 @@ class FromFunctionLocalOptimizer(LocalOptimizer):
return self._tracks return self._tracks
def __str__(self): def __str__(self):
return getattr(self, '__name__', '<FromFunctionLocalOptimizer instance>') return getattr(self, '__name__', '<FromFunctionLocalOptimizer instance>')
def print_summary(self, stream=sys.stdout, level=0): def print_summary(self, stream=sys.stdout, level=0, depth=-1):
print >> stream, "%s%s id=%i" %(' '*level, print >> stream, "%s%s id=%i" %(' '*level,
str(self.transform), str(self.transform),
id(self)) id(self))
...@@ -476,10 +479,12 @@ class LocalOptGroup(LocalOptimizer): ...@@ -476,10 +479,12 @@ class LocalOptGroup(LocalOptimizer):
if repl: if repl:
return repl return repl
def print_summary(self, stream=sys.stdout, level=0): def print_summary(self, stream=sys.stdout, level=0, depth=-1):
print >> stream, "%s%s id=%i" %(' '*level, self.__class__.__name__, id(self)) print >> stream, "%s%s id=%i" %(' '*level, self.__class__.__name__, id(self))
if depth != 0:
depth -= 1
for lopt in self.opts: for lopt in self.opts:
lopt.print_summary(stream, level=level+2) lopt.print_summary(stream, level=level+2, depth=depth)
class _LocalOpKeyOptGroup(LocalOptGroup): class _LocalOpKeyOptGroup(LocalOptGroup):
...@@ -559,7 +564,7 @@ class OpRemove(LocalOptimizer): ...@@ -559,7 +564,7 @@ class OpRemove(LocalOptimizer):
def __str__(self): def __str__(self):
return "%s(x) -> x" % (self.op) return "%s(x) -> x" % (self.op)
def print_summary(self, stream=sys.stdout, level=0): def print_summary(self, stream=sys.stdout, level=0, depth=-1):
print >> stream, "%s%s(%s) id=%i" %(' '*level, print >> stream, "%s%s(%s) id=%i" %(' '*level,
self.__class__.__name__, self.__class__.__name__,
str(self.op), str(self.op),
...@@ -754,7 +759,7 @@ class PatternSub(LocalOptimizer): ...@@ -754,7 +759,7 @@ class PatternSub(LocalOptimizer):
def __repr__(self): def __repr__(self):
return str(self) return str(self)
def print_summary(self, stream=sys.stdout, level=0): def print_summary(self, stream=sys.stdout, level=0, depth=-1):
name = getattr(self, '__name__', getattr(self, 'name', None)) name = getattr(self, '__name__', getattr(self, 'name', None))
print >> stream, "%s%s %s(%s, %s) id=%i" %(' '*level, print >> stream, "%s%s %s(%s, %s) id=%i" %(' '*level,
self.__class__.__name__, self.__class__.__name__,
...@@ -925,9 +930,10 @@ class NavigatorOptimizer(Optimizer): ...@@ -925,9 +930,10 @@ class NavigatorOptimizer(Optimizer):
if self.local_opt: if self.local_opt:
self.local_opt.add_requirements(env) self.local_opt.add_requirements(env)
def print_summary(self, stream=sys.stdout, level=0): def print_summary(self, stream=sys.stdout, level=0, depth=-1):
print >> stream, "%s%s (%i)" %(' '*level, self.__class__.__name__, id(self)) print >> stream, "%s%s (%i)" %(' '*level, self.__class__.__name__, id(self))
self.local_opt.print_summary(stream, level=level+2) if depth != 0:
self.local_opt.print_summary(stream, level=level+2, depth=depth-1)
class TopoOptimizer(NavigatorOptimizer): class TopoOptimizer(NavigatorOptimizer):
...@@ -1118,11 +1124,12 @@ class EquilibriumOptimizer(NavigatorOptimizer): ...@@ -1118,11 +1124,12 @@ class EquilibriumOptimizer(NavigatorOptimizer):
if max_use_abort: if max_use_abort:
_logger.error("EquilibriumOptimizer max'ed out by "+opt_name) _logger.error("EquilibriumOptimizer max'ed out by "+opt_name)
def print_summary(self, stream=sys.stdout, level=0): def print_summary(self, stream=sys.stdout, level=0, depth=-1):
name = getattr(self, 'name', None) name = getattr(self, 'name', None)
print >> stream, "%s%s %s id=%i" %(' '*level, self.__class__.__name__, name, id(self)) print >> stream, "%s%s %s id=%i" %(' '*level, self.__class__.__name__, name, id(self))
if depth != 0:
for lopt in self.local_optimizers: for lopt in self.local_optimizers:
lopt.print_summary(stream, level=level+2) lopt.print_summary(stream, level=level+2, depth=depth-1)
################# #################
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论