| from collections import Counter | |
| from time import sleep | |
| from tqdm import tqdm | |
| def track_jobs_with_pbar(jobs): | |
| num_completed = 0 | |
| with tqdm(total=len(jobs)) as pbar: | |
| while any(job.state not in ["COMPLETED", "FAILED", "DONE"] for job in jobs): | |
| sleep(2) | |
| job_infos = [j.get_info() for j in jobs] | |
| state2count = Counter([info['State'] if 'State' in info else "None" for info in job_infos]) | |
| newly_completed = state2count["COMPLETED"] - num_completed | |
| pbar.update(newly_completed) | |
| num_completed = state2count["COMPLETED"] | |
| s = [f"{k}: {v}" for k, v in state2count.items()] | |
| pbar.set_description(" | ".join(s)) | |
| return num_completed | |