For testing I want my messages time stamped like: 02:06:32: Check that the non recursive variants give the same value from 1000 upto 100000 step 1000 02:06:32: Currently at 1000 02:06:33: Currently at 11000 02:06:35: Currently at 21000 02:06:42: Currently at 31000 02:06:56: Currently at 41000 02:07:18: Currently at 51000 02:07:51: Currently at 61000 02:08:43: Currently at 71000 02:09:49: Currently at 81000 02:11:13: Currently at 91000 02:13:01: Calculating values OK
02:13:01: Start with the time needed to calculate 100000 times 02:13:01: Timing factorial_iterative (985): 31 02:13:32: Timing factorial_recursive (985): 55 02:14:28: Timing factorial_recursive_old (985): 56 02:15:24: Timing factorial_tail_recursion (985): 35 02:16:00: Timing factorial_tail_recursion_old(985): 40 02:16:40: Start with the time needed to calculate 1 times No recursive, because without tail recursion you would run out of stack space 02:16:40: Timing factorial_iterative (100000): 3.7705 02:16:44: Timing factorial_tail_recursion (100000): 3.7692 02:16:48: Timing factorial_tail_recursion_old(100000): 4.1537 And sometimes I do not want the time shown, to signify that the message belongs to the previous message. And sometimes I want no newline, because I want to print something behind it. For example the time needed to calculate something: 02:13:01: Timing factorial_iterative (985): 31 For this I wrote: ### Have the possibility to give the stream instead of using stdout class TimedMessage: """ For printing messages with time prepended before it Has the possibilty to keep time print blank for when several messages are send shortly after eachother. Also the possibilty to stay on the same line when things need to be appended """ def give_msg(self, message, show_time = True, use_newline = True): """ Prints the message to stdout Use show_time = False when you do not want time Use use_newline = False if you do not want a newline """ if show_time: time = strftime(self._format) else: time = self._blank_time formatted_message = time + message if use_newline: print(formatted_message) else: sys.stdout.write(formatted_message) sys.stdout.flush() def __init__(self, format = '%H:%M:%S: '): self._format = format self._blank_time = ' ' * len(strftime(self._format)) Can I improve on this? It is shared at: https://github.com/CecilWesterhof/PythonLibrary/blob/master/utilDecebal.py -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof -- https://mail.python.org/mailman/listinfo/python-list