Noufal Ibrahim wrote: > My question is whether this is a valid use for a decorator and whether > this kind of usage is pythonic. If not, are there any better ways to do > this?
It seems like a bit of a hack to me. I guess you change the way you call run_command to include desc? You could add another parameter to profile() which says whether to include parameters (or how many parameters) in the output. Something like def profile(stagename, params=0): def decorator(fn): def _wrapper(*args): start_time = time.time() ret = apply(fn, args) end_time = time.time() running_time = end_time - start_time if params: paramStr = ' (' + ', '.join(map(repr, args[:params])) + ')' else: paramStr = '' print "Stage %s%s took %f seconds to run"%(stagename,paramStr, running_time) return ret return _wrapper return decorator Then you would say @profile("Running command", params=1) def run_command(...): Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor