¿Puedo usar una cola de multiprocesamiento en una función llamada por Pool.imap?

Estoy usando python 2.7 e intento ejecutar algunas tareas pesadas de la CPU en sus propios procesos. Me gustaría poder enviar mensajes de vuelta al proceso principal para mantenerlo informado sobre el estado actual del proceso. La cola de multiprocesamiento parece perfecta para esto, pero no puedo entender cómo hacer que funcione.

Entonces, este es mi ejemplo de trabajo básico menos el uso de una cola.

import multiprocessing as mp
import time

def f(x):
    return x*x

def main():
    pool = mp.Pool()
    results = pool.imap_unordered(f, range(1, 6))
    time.sleep(1)

    print str(results.next())

    pool.close()
    pool.join()

if __name__ == '__main__':
    main()

He intentado pasar la cola de varias maneras, y reciben el mensaje de error "RuntimeError: los objetos de la cola solo deben compartirse entre los procesos a través de la herencia". Esta es una de las formas en que intenté en base a una respuesta anterior que encontré. (Tengo el mismo problema al intentar usar Pool.map_async y Pool.imap)

import multiprocessing as mp
import time

def f(args):
    x = args[0]
    q = args[1]
    q.put(str(x))
    time.sleep(0.1)
    return x*x

def main():
    q = mp.Queue()
    pool = mp.Pool()
    results = pool.imap_unordered(f, ([i, q] for i in range(1, 6)))

    print str(q.get())

    pool.close()
    pool.join()

if __name__ == '__main__':
    main()

Finalmente, el enfoque de aptitud física 0 (hacerlo global) no genera ningún mensaje, solo se bloquea.

import multiprocessing as mp
import time

q = mp.Queue()

def f(x):
    q.put(str(x))
    return x*x

def main():
    pool = mp.Pool()
    results = pool.imap_unordered(f, range(1, 6))
    time.sleep(1)

    print q.get()

    pool.close()
    pool.join()

if __name__ == '__main__':
    main()

Soy consciente de que probablemente funcionará con multiprocesamiento. Procese directamente y que hay otras bibliotecas para lograr esto, pero odio alejarme de las funciones estándar de la biblioteca que encajan perfectamente hasta que esté seguro de que no es solo mi falta de conocimiento evitando que pueda explotarlos.

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta