Can I use a multiprocessing Queue in a function called by Pool.imap? Can I use a multiprocessing Queue in a function called by Pool.imap? python python

Can I use a multiprocessing Queue in a function called by Pool.imap?


The trick is to pass the Queue as an argument to the initializer. Appears to work with all the Pool dispatch methods.

import multiprocessing as mpdef f(x):    f.q.put('Doing: ' + str(x))    return x*xdef f_init(q):    f.q = qdef main():    jobs = range(1,6)    q = mp.Queue()    p = mp.Pool(None, f_init, [q])    results = p.imap(f, jobs)    p.close()    for i in range(len(jobs)):        print q.get()        print results.next()if __name__ == '__main__':    main()