summaryrefslogtreecommitdiff
path: root/Lib/pstats.py
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2002-06-02 18:55:56 +0000
committerRaymond Hettinger <python@rcn.com>2002-06-02 18:55:56 +0000
commite0d4972acc8cfd4b8fb16c074a8031e50fab0f29 (patch)
treeb9a9286453c2ee4397618d4483679c3bc531f4b0 /Lib/pstats.py
parent1fab9ee085755ed2f7abcf28794d7c20bd51a97a (diff)
downloadcpython-git-e0d4972acc8cfd4b8fb16c074a8031e50fab0f29.tar.gz
Replaced .keys() with dictionary iterators
Diffstat (limited to 'Lib/pstats.py')
-rw-r--r--Lib/pstats.py53
1 files changed, 25 insertions, 28 deletions
diff --git a/Lib/pstats.py b/Lib/pstats.py
index 384db5232c..d36dc9e922 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)