私は種類のWebスクレーパーを構築しています。基本的には、どのようなソフトはどうなることは次のとおりです。Python/PySide/PyQtでのマルチスレッドのWebスクラブ
- ユーザー(私は)いくつかのデータ(ID)を入力 - IDは複雑で、そうでない数字だけそれらのIDに基づいて
- 、スクリプトがhttp://localhost/ID
これを達成する最良の方法は何ですか?だから私はそれを行うために20-30同時接続を上に探しています。
私は考えていた、簡単なループは解決策ですか?このループはQThreads(Qtアプリ)を起動するので、同時に実行されます。
しかし、私はループで見ている問題は、その前に実行されていたイテレーション/スレッドで使用されていないIDだけを使用するように指示する方法ですか?どのようなIDが使用されたのかを追跡し、未使用のものをQThreadsに委任する何らかの「委任者」関数が必要でしょうか?
は今、私はいくつかのコードを書いているが、私はそれが正しいかどうかを確認していない:
class GUI(QObject):
def __init__(self):
print "GUI CLASS INITIALIZED!!!"
self.worker = Worker()
for i in xrange(300):
QThreadPool().globalInstance().start(self.worker)
class Worker(QRunnable):
def run(self):
print "Hello world from thread", QThread.currentThread()
は今、私はこれらは私が欲しいものを本当に実現するかはわかりません。これは実際に別のスレッドで実行されていますか?私はこれが実行されるたびにcurrentThread()
が同じであるので尋ねています。だから、そうは見えません。
基本的に私の質問は、いくつかの同じQThreadを同時にどのように実行するのでしょうか?
お返事ありがとうございます!
ロジックをGUIから分離し、GUIにのみQTを使用してください。クローラロジックは純粋なPythonで書かれているか、[scrapy](http://scrapy.org/)のような既存のクローラを再利用する必要があります。 – Dikei