On 07/17/2012 11:44 PM, André Panisson wrote:
Hi all,

I'm having a strange behavior when executing the following script:
---------------------------
import multiprocessing

def f(i):
    return i

p = multiprocessing.Pool()
for i in range(20):
    def c(r):
        print r, i
    p.apply_async(f, (i,) , callback=c)
p.close()
p.join()
---------------------------

Result:
0 6
1 11
2 13
3 15
4 15
5 19
etc....

It seems that the callbacks of all submitted tasks are being overridden with the last callback submitted by apply_async. Is this the right behaviour or I am stumbling in some issue? I'm using Python 2.7.3 @ Ubuntu 12.04

Regards,


Sorry for taking the time, I just found the solution:
-------------------
import multiprocessing

def f(i):
    return i

def cfactory(i):
    def c(r):
        print r, i
    return c

p = multiprocessing.Pool()
for i in range(20):
    p.apply_async(f, (i,) , callback=cfactory(i))
p.close()
p.join()
------------------

Regards,
André

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to