私はまだ 2.6 でマルチプロセッシングを試していませんでしたが、pyprocessing (2.5 で呼び出されていた) で多くのことをしました。
それぞれが一連のスレッドを生成する多数のプロセスを探していることがわかります。
multiprocessing モジュールを使用しているため、マルチスレッドではなくマルチプロセスを使用することをお勧めします。デッドロックなどの問題が少なくなります。
キュー オブジェクトを作成します。http://pyprocessing.berlios.de/doc/queue-objects.html
マルチ プロセス環境を作成するには、ワーカー プロセスを管理するプールを使用します: http://pyprocessing.berlios.de/doc/pool-objects.html 。次に、ワーカーに非同期/同期を適用し、必要に応じて各ワーカーにコールバックを追加することもできます。ただし、コールバックは一般的なコード ブロックであり、すぐに返される必要があることを忘れないでください (ドキュメントに記載されているとおり)。
追加情報: 必要に応じて、マネージャーhttp://pyprocessing.berlios.de/doc/manager-objects.htmlを作成して、キュー オブジェクトへのアクセスを管理します。これを行うには、キュー オブジェクトを共有する必要があります。ただし、共有して管理すると、プロキシ オブジェクトを作成することにより、ネットワーク全体でこの共有キューにアクセスできるという利点があります。これにより、集中型共有キュー オブジェクトのメソッドを (明らかに) 任意のネットワーク ノードのネイティブ メソッドとして呼び出すことができます。
これはドキュメントのコード例です
1 台のマシンでマネージャー サーバーを実行し、クライアントが他のマシンからそれを使用するようにすることができます (関連するファイアウォールで許可されている場合)。次のコマンドを実行すると、リモート クライアントが使用できる共有キューのサーバーが作成されます。
>>> from processing.managers import BaseManager, CreatorMethod
>>> import Queue
>>> queue = Queue.Queue()
>>> class QueueManager(BaseManager):
... get_proxy = CreatorMethod(callable=lambda:queue, typeid='get_proxy')
...
>>> m = QueueManager(address=('foo.bar.org', 50000), authkey='none')
>>> m.serve_forever()
1 つのクライアントは、次のようにサーバーにアクセスできます。
>>> from processing.managers import BaseManager, CreatorMethod
>>> class QueueManager(BaseManager):
... get_proxy = CreatorMethod(typeid='get_proxy')
...
>>> m = QueueManager.from_address(address=('foo.bar.org', 50000), authkey='none')
>>> queue = m.get_proxy()
>>> queue.put('hello')
安全なスレッド化を主張する場合、PEP371 (マルチプロセッシング) はこれを参照します http://code.google.com/p/python-safethread/