2013-06-20 24 views
0

我使用feedparser來打印前5個Google新聞標題。我以同樣的方式從URL中獲取所有信息。加速feedparser

x = 'https://news.google.com/news/feeds?pz=1&cf=all&ned=us&hl=en&topic=t&output=rss' 
feed = fp.parse(x) 

我的問題是,我在運行此腳本時,我開始一個外殼,讓〜2第二橫向變得很煩人。這個時間延遲主要來自通過網絡的通信,還是來自解析文件?

如果是從解析文件,有沒有辦法只採取我所需要的(因爲這是非常小的在這種情況下)?

如果是從以前的可能性,有什麼辦法可以加快這個過程嗎?

+0

你使用一些框架還是純python shell腳本? –

+1

運行'python -mcProfile your_script.py'來查看時間花在哪裏。 – jfs

+0

謝謝塞巴斯蒂安的提示。作爲後續行動,約翰內斯看起來是多種因素是正確的。在feedparser,打開urllib和使用http訪問信息之間時間相當均勻。 – jay

回答

2

我想這幾個延遲總計達:

  • Python解釋器需要一段時間才能啓動,並導入模塊
  • 網絡通信需要一點
  • 解析大概只消耗很少的時間,但它確實如此

我認爲沒有直接的方法來加快速度,特別是不是第一點。我的建議是,您定期下載您的提要(您可以設置一個cron作業或編寫一個Python守護程序)並將其存儲在磁盤上的某個位置(即純文本文件),以便您只需在終端上顯示它們啓動(回聲可能是最簡單和最快的)。

我個人對feedparser有很好的體驗。我用它每半個小時用一個Python守護進程下載〜100個feed。

+0

對於最後一點,我個人使用speedparser,從字符串解析提要的速度提高了5倍。 –

0

如果你想要更快的結果,實時解析不是更好的情況。

您可以嘗試通過Celery或類似的其他解決方案異步執行此操作。我喜歡芹菜,它提供了很多功能。有作爲cron或async等的任務的能力。