urllib2を使用してデータスクレイピング呼び出しを行っていますが、それぞれが完了するまでに約1秒かかります。URL呼び出しループをさまざまなオフセットのスレッドにマルチスレッド化できるかどうかをテストしようとしていました。
私は今、update_items()メソッドでこれを行っています。ここで、最初と2番目のパラメーターは、ループを実行するためのオフセットと制限です。
import threading
t1 = threading.Thread(target=trade.update_items(1, 100))
t2 = threading.Thread(target=trade.update_items(101, 200))
t3 = threading.Thread(target=trade.update_items(201, 300))
t1.start()
t2.start()
t3.start()
#t1.join()
#t2.join()
#t3.join()
コードのように、スレッドの待機を防ぐためにjoin()をコメントアウトしようとしましたが、このライブラリの考えが間違っているようです。print()関数をupdate_items()メソッドに挿入しました。これは、私が達成したかったように、3つのスレッドすべてが並列ではなく、シリアルルーチンでループしていることを示しています。
私の通常のスクレイピングプロトコルは完了するのに約5時間かかり、それは非常に小さなデータですが、HTTP呼び出しには常に時間がかかります。このタスクを少なくとも数回マルチスレッド化して、フェッチを少なくとも30〜45分に短縮したいと思います。