Your final:
print po_res.get()
statement blocks the main program until the map_async()
is entirely finished. It's the .get()
that blocks, waiting for the entire result list to be available. And that can't happen until all the work passed to map_async()
has been completed and all the results returned to the main program.
Comment that statement out, and you'll see that your program exits very quickly.
That said, it's best practice to use .close()
and .join()
regardless.