Вопросы производительности при использовании нескольких слоев генераторов в Python? - PullRequest
3 голосов
/ 17 апреля 2009

Существуют ли какие-либо соображения относительно производительности при использовании большого количества соединенных вместе генераторов, в отличие от одного генератора.

Например:

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 Ответ

2 голосов
/ 17 апреля 2009

В генераторах цепочек нет ничего плохого, но в этом примере у A нет причин вызывать self.AB, он может просто циклически проходить по элементам, чтобы получить тот же результат.

Вы должны написать свой код настолько четко, насколько это возможно, и если он медленный, то используйте профилировщик, чтобы определить, где находится узкое место. Придуманные примеры, подобные этому, слишком далеки от реальности, чтобы быть полезными показателями эффективности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...