You can create multiple async calls, and then iterate through them.
c = Client()
dview = c[:]
asyncs = [dview.map_async(f, [arg]) for arg in args]
while asyncs:
for async in asyncs[:]:
if async.ready():
asyncs.remove(async)
print async.result[0]