有什麼辦法可以將find_all
轉換成更高效的內存生成器嗎?例如:BeautifulSoup`find_all`生成器
考慮:
soup = BeautifulSoup(content, "html.parser")
return soup.find_all('item')
我想改用:
soup = BeautifulSoup(content, "html.parser")
while True:
yield soup.next_item_generator()
(假設最終StopIteration
例外的適當移交)
有內置的一些發電機,但不能在查找中產生下一個結果。 find
只返回第一項。有了成千上萬的物品,find_all
吸了很多的記憶。對於5792個項目,我看到只有1GB以上的RAM。
我很清楚,有更高效的解析器,如lxml,可以實現這一點。讓我們假設還有其他商業限制阻止我使用其他任何東西。
我怎樣才能把find_all
到發電機通過更內存使用效率方式進行迭代。
美麗。偉大的方式來看問題。 –
非常好的解決方案:) – Dekel