4

次のようなリンクされたワーカープールのシステムをセットアップしようとしています:

 ╭────────╮                  ╭─────────╮                  ╭─────────╮
 │        ├──> Worker 1 ───> │         ├──> Worker 3 ───> │         │
 │  Data  ├──> Worker 1 ───> │  Queue  ├──> Worker 3 ───> │  Queue  ├───> Output
 │        ├──> Worker 1 ───> │         ├──> Worker 3 ───> │         │
 ╰────────╯                  ╰─────────╯                  ╰─────────╯ 
 ╭────────╮                     ^ ^ ^
 │        ├──> Worker 2 ────────┘ │ │
 │  Data  ├──> Worker 2 ──────────┘ │
 │        ├──> Worker 2 ────────────┘
 ╰────────╯                         

独自の汎用ソリューションを展開する前に、使用できる既存のライブラリ (またはクリーンmultiprocessing/threadingサンプル) はありますか? この種の設定を何と呼べばよいか分からないので、私の Google 検索ではあまり有用な結果が得られませんでした。

どんなヒントでも大歓迎です!

4

2 に答える 2

1

ZeroMQは軽量のソリューションであり、Pythonバインディングを備えています。 http://www.zeromq.org/bindings:python

于 2013-01-19T12:42:10.110 に答える
1

以前にBeanstalkdを見たことがあります。これは、マルチプロセッサがプロデューサーおよび/またはコンシューマーであるワーカーキューの処理に優れており、スレッド化について心配する必要がありません。

beanstalkcに Python クライアントがあります。

彼らのwikiから取られた例。

>>> import beanstalkc
>>> beanstalk = beanstalkc.Connection(host='localhost', port=14711)
>>> beanstalk.put('hey!')
1
>>> job = beanstalk.reserve()
>>> job.body
'hey!'
>>> job.delete()

これはあなたのニーズに合うかもしれません - IIRC は永続的なキューを持つこともできます。

于 2013-01-19T13:07:00.763 に答える