[英]Count how many times a function has been called
def matrix_mult_rec(M, k):
if (k == 0):
return 1
if(k >=1):
M_to_power = M * matrix_mult_rec(M, k-1)
return M_to_power
我定义了一个函数,如果你输入一个矩阵和幂,它会返回 M^k,其中M
是一个矩阵。 我想知道如果k = 100
,这个函数被调用了多少次。 我该怎么做?
您可以使用一个类来封装您的功能,例如:
class Func:
def __init__(self):
self.cnt=0
def __call__(self, arg):
self.cnt+=1
# here have your function...
例子:
my_func=Func()
for x in range(98):
my_func(44)
.cnt
始终可供您检查:
>>> my_func.cnt
98
有了这个,你可以使用一个while
循环:
while my_func.cnt<tgt:
my_func(arg)
您还可以将您的函数传递给对象:
class Func:
def __init__(self, proc):
self.cnt=0
def __call__(self, arg):
self.cnt+=1
return proc(arg)
然后像这样调用:
def your_func(arg);
# your func
my_func=Func(your_func)
while my_func.cnt<tgt:
my_func(arg)
您也可以使用装饰器 - 不确定什么对您来说很简单
import functools
def invocation_counter(func):
inv_counter = 0
@functools.wraps(func)
def decorating_function(*args, **kwargs):
nonlocal inv_counter
inv_counter += 1
func(*args, **kwargs)
def info():
return inv_counter
def clear():
inv_counter = 0
decorating_function.clear = clear
decorating_function.info = info
return decorating_function
然后使用这个:
@invocation_counter
def f1(some_text):
print(some_text)
f1("Hi")
f1("Hello")
f1("Ciao")
print(f1.info())
这打印 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.