0

概念的な質問があります。

私は現在、終わりのないループ内で実行するプログラムを持っています。

Def (mycode):

    Perform login to server and retrieve cookies etc
    While 1:
      Perform an URL request (with custom headers, cookies etc)
      Process the reply
      Perform URL requests dependent upon the values in replies
      Process reply

URLは次々に呼び出さなければならないので、これがそのまま続くのはうれしいです。

現在、サーバーは 1 つのアカウントを限られた数の機能に制限しています。この機能を 2 つ (またはそれ以上) の異なるアカウントで実行できると便利です。

私の質問は次のとおりです。これは可能ですか?私はキューとマルチスレッドについてかなりの量の読み取りを行いました。もしあなたが親切な人が良い (理解しやすい) 例でメソッドを提案できれば、私は最も感謝しています.

4

1 に答える 1

0

Geventは、パフォーマンスに優れたグリーン スレッドの実装であり、例があります。

同じサーバーの異なるアカウントに対してこれを行うことで、異なるワーカー関数が URL 処理を処理することを意味するかどうかはわかりません。実際Def (mycode) nには、アカウントごとに時間があります。おそらく、詳細を拡張することができます。

>>> import gevent
>>> from gevent import socket
>>> urls = ['www.google.com', 'www.example.com', 'www.python.org']
>>> jobs = [gevent.spawn(socket.gethostbyname, url) for url in urls]
>>> gevent.joinall(jobs, timeout=2)
>>> [job.value for job in jobs]
['74.125.79.106', '208.77.188.166', '82.94.164.162']

さらに、Beanstalkdのようなものを使用することで問題を解決できます。これにより、アカウントごとにメイン プロセスを「n」回実行し、結果を beanstalk-queue に配置して別のプロセスで処理することができます。重要なアプリケーションでは常に良いことであるスレッド化を処理する必要がなくなります。

于 2013-01-31T01:22:37.243 に答える