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