簡體   English   中英

性能注意事項在Python中使用多層生成器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM