Why not use the return value of map_async?
result=pool.map_async(myFunction, ...)
result.wait()
Since the dictionary itself destroys the order of the values, I would in fact consider using imap_unordered to transport all the values, something like:
def myFunction(arg):
# time consuming stuff...
return arg, True
nonpooldict = dict(pool.imap_unordered(myFunction, data))
# Will collect results in a dictionary as they are calculated
Otherwise you may want to try a synchronization method such as SyncManager.Event. I'm not sure if there is a way to flush specific types of SyncManager changes like the dictionary.