性能注意事项在Python中使用多层生成器?

时间:2009-04-17 09:27:21

标签: python performance generator

使用链接在一起的大量生成器是否有任何性能方面的考虑因素,而不仅仅是单个生成器。

例如:

def A(self, items):
    for item in self.AB(items):
        if object.A():
            yield item

def AB(self, items):
    for object in self.ABC(objects):
        if object.A() or object.B():
            yield object

def ABC(self, objects):
    for object in objects:
        if object.A() or object.B() or object.C():
            yield object

显然,调用A(objects)将会经历三个不同的生成器,但在许多情况下,如果有不同的生成器来处理不同的过滤,它会使代码重用得更好。任何人都可以表明使用这种技术会对性能产生重大影响吗?

1 个答案:

答案 0 :(得分:2)

链接生成器没有任何问题,但在这个例子中,A没有理由调用self.AB,它可以循环遍历项目以获得相同的结果。

您应尽可能清楚地编写代码,如果速度慢,请使用分析器确定瓶颈所在。像这样的受试者的例子与现实相差太远,不能成为有用的绩效指标。