Show More
@@ -940,7 +940,8 b' python-profiler package from non-free.""")' | |||||
940 |
|
940 | |||
941 | @skip_doctest |
|
941 | @skip_doctest | |
942 | @line_cell_magic |
|
942 | @line_cell_magic | |
943 | def timeit(self, line='', cell=None): |
|
943 | @needs_local_scope | |
|
944 | def timeit(self, line='', cell=None, local_ns=None): | |||
944 | """Time execution of a Python statement or expression |
|
945 | """Time execution of a Python statement or expression | |
945 |
|
946 | |||
946 | Usage, in line mode: |
|
947 | Usage, in line mode: | |
@@ -1074,7 +1075,16 b' python-profiler package from non-free.""")' | |||||
1074 | tc = clock()-t0 |
|
1075 | tc = clock()-t0 | |
1075 |
|
1076 | |||
1076 | ns = {} |
|
1077 | ns = {} | |
1077 |
|
|
1078 | glob = self.shell.user_ns | |
|
1079 | # handles global vars with same name as local vars. We store them in conflict_globs. | |||
|
1080 | if local_ns is not None: | |||
|
1081 | conflict_globs = {} | |||
|
1082 | for var_name, var_val in glob.items(): | |||
|
1083 | if var_name in local_ns: | |||
|
1084 | conflict_globs[var_name] = var_val | |||
|
1085 | glob.update(local_ns) | |||
|
1086 | ||||
|
1087 | exec(code, glob, ns) | |||
1078 | timer.inner = ns["inner"] |
|
1088 | timer.inner = ns["inner"] | |
1079 |
|
1089 | |||
1080 | # This is used to check if there is a huge difference between the |
|
1090 | # This is used to check if there is a huge difference between the | |
@@ -1093,6 +1103,11 b' python-profiler package from non-free.""")' | |||||
1093 | worst = max(all_runs) / number |
|
1103 | worst = max(all_runs) / number | |
1094 | timeit_result = TimeitResult(number, repeat, best, worst, all_runs, tc, precision) |
|
1104 | timeit_result = TimeitResult(number, repeat, best, worst, all_runs, tc, precision) | |
1095 |
|
1105 | |||
|
1106 | # Restore global vars from conflict_globs | |||
|
1107 | if local_ns is not None: | |||
|
1108 | if len(conflict_globs) > 0: | |||
|
1109 | glob.update(conflict_globs) | |||
|
1110 | ||||
1096 | if not quiet : |
|
1111 | if not quiet : | |
1097 | # Check best timing is greater than zero to avoid a |
|
1112 | # Check best timing is greater than zero to avoid a | |
1098 | # ZeroDivisionError. |
|
1113 | # ZeroDivisionError. |
General Comments 0
You need to be logged in to leave comments.
Login now