【发布时间】:2014-08-01 03:13:51
【问题描述】:
我有许多相互独立但需要共同计算输出的方法。因此,当任何方法中的变量发生变化时,所有方法都会在计算中被调用,这既慢又昂贵。这是我所拥有的快速伪代码:
# o represents an origin variable
# valueA represents a variable which can change
def a (o, valueA):
# calculations
return resultA
def b (o, valueB):
# calculations
return resultA
def c (o, valueC1, valueC2):
# calculations
return resultA
def compute (A, B, C1, C2):
one = self.a(o, A)
two = self.b(one,B)
three = self.c(two, C1, C2)
return img
例如当C1的值发生变化时,当调用compute时,尽管a和b没有变化,所有的方法都会被计算出来。我想要的是某种方式来检查A,B,C1,C2 的哪些值在每次调用compute 之间发生了变化。
我考虑过定义一个值列表,然后在下一次调用时将其与传递给compute 的新值进行比较。例如;第一次调用:list=[1,2,3,4] 第二次调用list=[1,3,4,5] 所以b 和c 需要计算,但a 是一样的。但是,我不确定如何从比较到定义要调用的方法?
我的特定应用程序的一些背景信息,以防万一。我有一个带有滑块的 wxPython 窗口,这些滑块确定图像处理的值,并且在这些滑块的每次更改时都会绘制一个图像。
将每次调用与compute 进行比较并删除这些浪费的重复计算的最佳方法是什么?
【问题讨论】:
标签: python python-2.7 methods wxpython