gpt4 book ai didi

python - 非常简单的 python 函数需要在函数而不是子函数上花费很长时间

转载 作者:太空宇宙 更新时间:2023-11-04 11:03:53 25 4
gpt4 key购买 nike

我花了很多时间试图弄清楚这里发生了什么。

下面代码中的函数“grad_logp”在我的程序中被调用了很多次,cProfile 和 runsnakerun 可视化结果显示函数 grad_logp 在“本地”花费了大约 .00004 秒,而不是在它调用的任何函数中的每次调用和函数“n”每次调用在本地花费大约 .00006s。这两次加起来约占我关心的节目时间的 30%。这似乎不是函数开销,因为其他 python 函数在“本地”花费的时间要少得多,合并“grad_logp”和“n”不会使我的程序更快,但这两个函数的操作看起来相当微不足道。有人对可能发生的事情有任何建议吗?

我是否做了一些明显低效的事情?我是否误解了 cProfile 的工作原理?

def grad_logp(self, variable, calculation_set ):

p = params(self.p,self.parents)

return self.n(variable, self.p)

def n (self, variable, p ):
gradient = self.gg(variable, p)

return np.reshape(gradient, np.shape(variable.value))
def gg(self, variable, p):
if variable is self:

gradient = self._grad_logps['x']( x = self.value, **p)
else:
gradient = __builtin__.sum([self._pgradient(variable, parameter, value, p) for parameter, value in self.parents.iteritems()])

return gradient

最佳答案

用 C 编写的函数不通过分析进行检测;因此,例如,花费在 sum(您正在拼写 __builtin__.sum)中的任何时间都将向其调用者收费。不确定 np.reshape 是什么,但如果它是 numpy.reshape,那同样适用。

关于python - 非常简单的 python 函数需要在函数而不是子函数上花费很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2986372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com