diff options
author | Raymond Hettinger <python@rcn.com> | 2002-06-02 18:55:56 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2002-06-02 18:55:56 (GMT) |
commit | e0d4972acc8cfd4b8fb16c074a8031e50fab0f29 (patch) | |
tree | b9a9286453c2ee4397618d4483679c3bc531f4b0 /Lib/pstats.py | |
parent | 1fab9ee085755ed2f7abcf28794d7c20bd51a97a (diff) | |
download | cpython-e0d4972acc8cfd4b8fb16c074a8031e50fab0f29.zip cpython-e0d4972acc8cfd4b8fb16c074a8031e50fab0f29.tar.gz cpython-e0d4972acc8cfd4b8fb16c074a8031e50fab0f29.tar.bz2 |
Replaced .keys() with dictionary iterators
Diffstat (limited to 'Lib/pstats.py')
-rw-r--r-- | Lib/pstats.py | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/Lib/pstats.py b/Lib/pstats.py index 384db52..d36dc9e 100644 --- a/Lib/pstats.py +++ b/Lib/pstats.py @@ -142,7 +142,7 @@ class Stats: self.total_calls += other.total_calls self.prim_calls += other.prim_calls self.total_tt += other.total_tt - for func in other.top_level.keys(): + for func in other.top_level: self.top_level[func] = None if self.max_name_len < other.max_name_len: @@ -150,12 +150,12 @@ class Stats: self.fcn_list = None - for func in other.stats.keys(): + for func, stat in other.stats.iteritems(): if func in self.stats: old_func_stat = self.stats[func] else: old_func_stat = (0, 0, 0, 0, {},) - self.stats[func] = add_func_stats(old_func_stat, other.stats[func]) + self.stats[func] = add_func_stats(old_func_stat, stat) return self # list the tuple indices and directions for sorting, @@ -178,7 +178,7 @@ class Stats: if not self.sort_arg_dict: self.sort_arg_dict = dict = {} bad_list = {} - for word in self.sort_arg_dict_default.keys(): + for word, tup in self.sort_arg_dict_default.iteritems(): fragment = word while fragment: if not fragment: @@ -186,9 +186,9 @@ class Stats: if fragment in dict: bad_list[fragment] = 0 break - dict[fragment] = self.sort_arg_dict_default[word] + dict[fragment] = tup fragment = fragment[:-1] - for word in bad_list.keys(): + for word in bad_list: del dict[word] return self.sort_arg_dict @@ -213,8 +213,7 @@ class Stats: connector = ", " stats_list = [] - for func in self.stats.keys(): - cc, nc, tt, ct, callers = self.stats[func] + for func, (cc, nc, tt, ct, callers) in self.stats.iteritems(): stats_list.append((cc, nc, tt, ct) + func + (func_std_string(func), func)) @@ -234,14 +233,13 @@ class Stats: oldstats = self.stats self.stats = newstats = {} max_name_len = 0 - for func in oldstats.keys(): - cc, nc, tt, ct, callers = oldstats[func] + for func, (cc, nc, tt, ct, callers) in oldstats.iteritems(): newfunc = func_strip_path(func) if len(func_std_string(newfunc)) > max_name_len: max_name_len = len(func_std_string(newfunc)) newcallers = {} - for func2 in callers.keys(): - newcallers[func_strip_path(func2)] = callers[func2] + for func2, caller in callers.iteritems(): + newcallers[func_strip_path(func2)] = caller if newfunc in newstats: newstats[newfunc] = add_func_stats( @@ -251,7 +249,7 @@ class Stats: newstats[newfunc] = (cc, nc, tt, ct, newcallers) old_top = self.top_level self.top_level = new_top = {} - for func in old_top.keys(): + for func in old_top: new_top[func_strip_path(func)] = None self.max_name_len = max_name_len @@ -263,14 +261,13 @@ class Stats: def calc_callees(self): if self.all_callees: return self.all_callees = all_callees = {} - for func in self.stats.keys(): + for func, (cc, nc, tt, ct, callers) in self.stats.iteritems(): if not func in all_callees: all_callees[func] = {} - cc, nc, tt, ct, callers = self.stats[func] - for func2 in callers.keys(): + for func2, caller in callers.iteritems(): if not func2 in all_callees: all_callees[func2] = {} - all_callees[func2][func] = callers[func2] + all_callees[func2][func] = caller return #****************************************************************** @@ -330,7 +327,7 @@ class Stats: print filename if self.files: print indent = ' ' * 8 - for func in self.top_level.keys(): + for func in self.top_level: print indent, func_get_function_name(func) print indent, self.total_calls, "function calls", @@ -468,20 +465,20 @@ def add_func_stats(target, source): def add_callers(target, source): """Combine two caller lists in a single list.""" new_callers = {} - for func in target.keys(): - new_callers[func] = target[func] - for func in source.keys(): + for func, caller in target.iteritems(): + new_callers[func] = caller + for func, caller in source.iteritems(): if func in new_callers: - new_callers[func] = source[func] + new_callers[func] + new_callers[func] = caller + new_callers[func] else: - new_callers[func] = source[func] + new_callers[func] = caller return new_callers def count_calls(callers): """Sum the caller statistics to get total number of calls received.""" nc = 0 - for func in callers.keys(): - nc += callers[func] + for calls in callers.itervalues(): + nc += calls return nc #************************************************************************** @@ -595,19 +592,19 @@ if __name__ == '__main__': print "Reverse the sort order of the profiling report." def do_sort(self, line): - abbrevs = self.stats.get_sort_arg_defs().keys() + abbrevs = self.stats.get_sort_arg_defs() if line and not filter(lambda x,a=abbrevs: x not in a,line.split()): apply(self.stats.sort_stats, line.split()) else: print "Valid sort keys (unique prefixes are accepted):" - for (key, value) in Stats.sort_arg_dict_default.items(): + for (key, value) in Stats.sort_arg_dict_default.iteritems(): print "%s -- %s" % (key, value[1]) return 0 def help_sort(self): print "Sort profile data according to specified keys." print "(Typing `sort' without arguments lists valid keys.)" def complete_sort(self, text, *args): - return [a for a in Stats.sort_arg_dict_default.keys() if a.startswith(text)] + return [a for a in Stats.sort_arg_dict_default if a.startswith(text)] def do_stats(self, line): return self.generic('print_stats', line) |