看板 Python 關於我們 聯絡資訊
最近在用 python 寫一個可同時抓取多個網頁的多執行緒程式 呼叫 httplib 抓某個 url 的 response code (200, 404, 403, 401...) 參考 stackoverflow 的文章,使用 threading + Queue 的方式 http://stackoverflow.com/questions/2632520/what-is-the-fastest-way-to-send-100-000-http-requests-in-python 發現好像跟自己 for loop 去做的速度差不多 研究一下之後發現,如果不牽扯到封包傳送的話 threading 的方式是可以 work 的 (直接把 httplib.getresponse 那段 mark 掉) 但是只要有傳送封包,multithread 就沒有辦法正常運作 (就只能一個一個送) 想請問各位這樣的問題是否因為 httplib, urllib, urllib2 等 lib 沒辦法同時傳送 必須使用 twisted, asyncore 等方式實作,才能滿足我的需求 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.20.117.109
AlanSung:try gevent 12/09 18:24
darkgerm:網路連線怎麼可能不扯到封包傳送.... 12/09 18:28
darkgerm:你的速度瓶頸會不會卡在網路速度? 12/09 18:30
carlcarl:gevent++ 感覺是卡在io 12/10 00:25
oarpvfpre:改用 gevent 之後,可以達到滿足我的需求了 12/10 00:39
oarpvfpre:我一次把10個網站加到 list 裡面去抓資料 12/10 00:40
oarpvfpre:抓完之後再呼叫接下來10個... 12/10 00:40
oarpvfpre:不知道 gevent + threading 會不會更快? 12/10 00:40
timTan:Try scrapy 12/10 08:41
carlcarl:gevent+threading感覺不會比較快... 12/14 21:07