[英]Performance Considerations Using Multiple Layers of Generators in Python?
使用大量链接在一起的发生器是否有任何性能考虑,而不是仅使用单个发生器。
例如:
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)
将经历三个不同的生成器,但在许多情况下,如果有不同的生成器来处理不同的过滤,它会使代码重用得更好。 任何人都可以表明使用这种技术会对性能产生重大影响吗?
链接生成器没有任何问题,但在此示例中,A没有理由调用self.AB,它可以循环遍历项目以获得相同的结果。
您应该尽可能清楚地编写代码,如果速度慢,则使用分析器确定瓶颈的位置。 像这样的受控例子离现实太远,不能成为有用的绩效指标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.