0
Da ich mehrere Argumente in meine Arbeiter Funktion benötigen, so verwende ich starmap, aber wie kann ich zeigen den Fortschritt mit tqdm?Python Multiprocessing starmap progressBar
from itertools import repeat
from multiprocessing import Pool
def func(i, a, b, c):
print(i, a, b, c)
if __name__ == '__main__':
pool = Pool(thread_num)
a, b, c = 'a', 'b', 'c'
pool.starmap(func, zip(range(100), repeat(a), repeat(b), repeat(c)))
pool.close()
pool.join()
So wie kann ich Benutzer tqdm, um die Vorfreude zu zeigen?
Ist es möglich, Ihre Funktion zu ändern, um ein einzelnes Tupelargument zu erhalten, anstatt mehrere? Das würde Sie "imap" anstelle von "starmap" ermöglichen, und so könnte der Hauptprozess die eingehenden Ergebnisse durchlaufen, um den Fortschrittsbalken zu aktualisieren. Leider gibt es keine Istarmap! Wenn Sie dies nur für eine Funktion tun müssen, die Sie nicht ändern können (z. B. aus einer Bibliothek), können Sie sie mit der Funktion 'def wrapper (tup): func (* tup)' umschließen, die auf der obersten Ebene definiert ist. – Blckknght