2010-12-03 118 views
1

我試圖創造一個Python腳本,讓我加載了與具有在瀏覽器中打開多個標籤頁的多個連接,更明確地我有這樣的代碼:Python中打開多個URL連接 - urllib2的

https://github.com/eWizardII/SOC357-Twitter-Facebook-Project/blob/master/chuck.py

使用urlv等,我加載多個連接到API,但是我想讓它,以便我在同一時間而不是連續調用所有5。我研究過扭曲和整齊的事情,但我不知道如何使用它們來幫助我。

感謝, 所羅門

+1

相關:[閱讀與asyncore網站](http://stackoverflow.com/q/1367453/279627) – 2010-12-03 17:55:34

+0

謝謝,我也會研究。 – eWizardII 2010-12-04 23:21:39

回答

1

您可以創建HttpHandlers來處理異步http請求(就代碼而言,不是異步的,而是涉及到實際的網絡操作時)。

試試這個:

import urllib2 

class MyHttpHandler(urllib2.HTTPHandler): 
    def http_response(self, request, response): 
     for l in response: 
      print l 
     return response 

u = urllib2.build_opener(MyHttpHandler()) 
for i in range(1, 5): 
    u.open('http://stackoverflow.com') 
0

可以使用threading庫。這是最適合的事情之一。

+0

可能是這樣嗎? https://github.com/eWizardII/homobabel/blob/master/falcon.py雖然當我沒有線程時間的話,看起來時間總和加起來就像沒有線程一樣。我知道有很多關於GIL和Python線程工作的信息,但我認爲你所建議的線程就是這樣的http://www.wellho.net/solutions/python-python-threads- a-first-example.html,因爲基本上這個問題是如果一個json文件正在被下載,我怎麼開始一個並行連接,比如說4個。 – eWizardII 2010-12-04 23:18:49

+0

好的,我可以通過我在上面發佈的鏈接和使用@ 01001111所說的鏈接來設置它,所以如果有人在這裏發現這個問題是我最終以https://github.com/eWizardII/homobabel/blob/master /Experimental/demo_async_falcon.py謝謝! – eWizardII 2010-12-05 06:07:16

4

使用的shell。

#!/bin/bash 
python chuck.py "request 1" & 
python chuck.py "request 2" & 
python chuck.py "request 3" & 
python chuck.py "request 4" & 
python chuck.py "request 5" & 

這將運行5個程序副本。它將捆綁儘可能多的內核和CPU。而且 - 獎金 - 不使用子進程或線程或任何其他編程。

如果所有5個應該做某種不同的事情,那麼你將不得不提供某種參數或選項。查看​​獲取收集命令行參數的方法。