Python での HTTP リクエストの最適化
特に大規模なデータセットを扱う場合、Python で多数の HTTP リクエストを迅速に送信する必要性が頻繁に生じます。ただし、Python にはさまざまな同時実行性やスレッド化オプションがある中で、最も効率的なアプローチを選択するのは難しい場合があります。実行可能な解決策の 1 つは、シンプルかつ効果的な方法を利用することです。
効率的な HTTP リクエストの実装
次のコードは、Python (2.6) での非常に効率的な実装を示しています。互換性):
import urlparse from threading import Thread import httplib, sys from Queue import Queue concurrent = 200 def doWork(): while True: url = q.get() status, url = getStatus(url) doSomethingWithResult(status, url) q.task_done() def getStatus(ourl): try: url = urlparse(ourl) conn = httplib.HTTPConnection(url.netloc) conn.request("HEAD", url.path) res = conn.getresponse() return res.status, ourl except: return "error", ourl def doSomethingWithResult(status, url): print status, url q = Queue(concurrent * 2) for i in range(concurrent): t = Thread(target=doWork) t.daemon = True t.start() try: for url in open('urllist.txt'): q.put(url.strip()) q.join() except KeyboardInterrupt: sys.exit(1)
説明
この最適化されたソリューションは、リソースの使用とタスクの実行のバランスをとる合理化されたアプローチを利用して、従来の方法よりも優れたパフォーマンスを発揮します。スピード。
以上が効率的なデータ処理のために Python で HTTP リクエストを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。