问题
出于教学目的,我想计算一个给定行在给定函数中执行多少次而不修改或装饰它.例如,对于功能:
def binary_search(seq, x):
(a, b) = (0, len(seq) - 1)
while a <= b:
m = (a + b) / 2
if x < seq[m]:
b = m - 1
elif x > seq[m]:
a = m + 1
else:
return m
我会写这样的东西:
print count_exec(binary_search, range(100), 44, line_number = 4)
……甚至是这样的:
print count_exec(binary_search(range(100), 44), line = "m = (a + b) / 2")
…两者都应该打印执行第4行的次数(即7).最终目标是为任何功能的复杂性提供经验方法:
非解决方案
我目前的解决方案是添加一个函数属性:
def binary_search(seq, x):
binary_search.count = 0 #
(a, b) = (0, len(seq) - 1)