The simplest way would probably be to apply tqdm() around the inputs, rather than the mapping function. For example:
inputs = zip(param1, param2, param3)
with mp.Pool(8) as pool:
results = pool.starmap(my_function, tqdm.tqdm(inputs, total=len(param1)))
Note that the bar is updated when my_function
is called, rather than when it returns. If that distinction matters, you can consider rewriting starmap as some other answers suggest. Otherwise, this is a simple and efficient alternative.