Helper to print a traceback from the timed code. Typical use: t = Timer(...) # outside the try/except try: t.timeit(...) # or t.repeat(...) except: t.print_exc() The advantage over the standard traceback
(self, file=None)
| 134 | self.inner = local_ns["inner"] |
| 135 | |
| 136 | def print_exc(self, file=None): |
| 137 | """Helper to print a traceback from the timed code. |
| 138 | |
| 139 | Typical use: |
| 140 | |
| 141 | t = Timer(...) # outside the try/except |
| 142 | try: |
| 143 | t.timeit(...) # or t.repeat(...) |
| 144 | except: |
| 145 | t.print_exc() |
| 146 | |
| 147 | The advantage over the standard traceback is that source lines |
| 148 | in the compiled template will be displayed. |
| 149 | |
| 150 | The optional file argument directs where the traceback is |
| 151 | sent; it defaults to sys.stderr. |
| 152 | """ |
| 153 | import linecache, traceback |
| 154 | if self.src is not None: |
| 155 | linecache.cache[dummy_src_name] = (len(self.src), |
| 156 | None, |
| 157 | self.src.split("\n"), |
| 158 | dummy_src_name) |
| 159 | # else the source is already stored somewhere else |
| 160 | |
| 161 | traceback.print_exc(file=file) |
| 162 | |
| 163 | def timeit(self, number=default_number): |
| 164 | """Time 'number' executions of the main statement. |