【问题标题】:Performance Considerations Using Multiple Layers of Generators in Python?在 Python 中使用多层生成器的性能注意事项?
【发布时间】:2010-10-20 01:43:46
【问题描述】:

将许多生成器链接在一起,而不是仅使用单个生成器,是否有任何性能考虑?

例如:

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) 将通过三个不同的生成器,但在许多情况下,如果有不同的生成器来处理不同的过滤,它会使代码更好地重用。谁能指出使用这种技术会对性能产生重大影响?

【问题讨论】:

    标签: python performance generator


    【解决方案1】:

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

    您应该尽可能清楚地编写代码,如果速度较慢,请使用分析器来确定瓶颈在哪里。诸如此类的人为示例与现实相去甚远,无法作为有用的绩效指标。

    【讨论】:

    • 同意:对生成器的调用只是一个函数调用(即使它看起来有点复杂。处理调用的时间确实应该非常少。它与 lambda 基本相同x: λ x: λ x:x
    猜你喜欢
    • 2011-02-06
    • 1970-01-01
    • 2011-07-09
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多