No experimenté con multiprocesamiento en 2.6 todavía, pero jugué mucho con pyprocessing (como se llamaba en 2.5).
Veo que está buscando una cantidad de procesos con cada uno engendrando un conjunto de hilos, respectivamente.
dado que está utilizando el módulo de multiprocesamiento, voy a sugerir el uso proceso de múltiples y no enfoque multi hilo, que llegará a menos problemas como bloqueos, etc.
Crear un objeto de cola. http://pyprocessing.berlios.de/doc/queue-objects.html
Para crear un entorno de proceso múltiple use un grupo: http://pyprocessing.berlios.de/doc/pool-objects.html que le administrará los procesos de trabajo. A continuación, puede aplicar asincrónico/sincrónico a los trabajadores y también puede agregar una devolución de llamada para cada trabajador si es necesario. Pero recuerde devolver la llamada es un bloque de código común y debe regresar de inmediato (como se menciona en la documentación)
Alguna información adicional: Si es necesario crear un gestor de http://pyprocessing.berlios.de/doc/manager-objects.html para gestionar el acceso al objeto de cola. Deberá hacer que el objeto de la cola se comparta para esto. Pero la ventaja es que, una vez que se comparte y administra, puede acceder a esta cola compartida en toda la red creando objetos proxy. Esto le permitirá llamar a métodos de un objeto de cola compartido centralizado como (aparentemente) métodos nativos en cualquier nodo de red.
aquí es un ejemplo de código de la documentación
Es posible ejecutar un servidor del gestor en una máquina y tener clientes lo utilizan de otras máquinas (suponiendo que los servidores de seguridad involucrados lo permiten). ejecutando los siguientes comandos crea un servidor para una cola compartida que los clientes remotos pueden utilizar:
>>> 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()
un cliente puede acceder al servidor de la siguiente manera:
>>> 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')
Si insisten en seguros roscado cosas, PEP371 (multiprocesamiento) hace referencia a esto http://code.google.com/p/python-safethread/
Un extracto de su código que involucre objetos Queue podría ayudar. – jfs