这是我的代码,我想做的是逐列地将我编写的函数应用于numpy数组。要了解程序的进度,我想做一些与if i % 100 == 0: print i在for循环中可以做的类似的事情

from sklearn.mixture import GMM

gmm = GMM(n_components=2)

def getFunc(x):
    print 1
    return gmm.fit_predict(np.expand_dims(x,axis=1))

newX = np.apply_along_axis(getFunc, 0, inputX)

最佳答案

您可以尝试为您的函数编写装饰器。

from functools import wraps
from sklearn.mixture import GMM

gmm = GMM(n_components=2)

def log_every(n):
    def decorator(fn)
        counter = 0
        @wraps(fn)
        def wrapper(*args, **kwargs):
            counter += 1
            if counter % n == 0:
                print(n)
            return fn(*args, **kwargs)
        return wrapper
    return decorator

@log_every(100)
def getFunc(x):
    return gmm.fit_predict(np.expand_dims(x,axis=1))

newX = np.apply_along_axis(getFunc, 0, inputX)


但是,正如@MarcusMüller指出的那样,性能可能会受到影响。

关于python - 如何计算一个函数被调用的次数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38933393/

10-12 23:09