How does the callback function work in multiprocessing map_async?
Callback is called once with the result ([[0], [0, 1]]
) if you use map_async.
>>> from multiprocessing import Pool>>> def myfunc(x):... return [i for i in range(x)]... >>> A = []>>> def mycallback(x):... print('mycallback is called with {}'.format(x))... A.extend(x)... >>> pool=Pool()>>> r = pool.map_async(myfunc, (1,2), callback=mycallback)>>> r.wait()mycallback is called with [[0], [0, 1]]>>> print(A)[[0], [0, 1]]
Use apply_async
if you want callback to be called for each time.
pool=Pool()results = []for x in (1,2): r = pool.apply_async(myfunc, (x,), callback=mycallback) results.append(r)for r in results: r.wait()