Cómo crear un seguimiento del progreso utilizando tqdm avanzado para flujos de trabajo asíncronos, paralelos, Pandas, registros y de alto rendimiento
print(“5) Progreso de concurrencia: thread_map / Process_map”) def cpuish(n: int) -> int: x = 0 for i in range(50_000): x = (x + (n * i)) % 1_000_003 return x nums = list(range(80)) thread_results = thread_map(cpuish, nums, max_workers=8, desc=”thread_map”) print(“thread_map hecho:”, len(thread_results)) proc_results = Process_map(cpuish, nums[:20]max_workers=2, chunksize=2, desc=”process_map”) print(“process_map done:”, len(proc_results)) print() print(“6) logging_redirect_tqdm (los registros no romperán las barras)”) logger = logging.getLogger(“demo”) logger.setLevel(logging.INFO) handler = logging.StreamHandler() handler.setFormatter(logging.Formatter(“%(levelname)s: %(message)s”)) logger.handlers = [handler]

con logging_redirect_tqdm(): for k in tqdm(range(60), desc=”Trabajar con registros”): time.sleep(0.01) if k in (5, 25, 45): logger.info(f”checkpoint k={k}”) print() print(“7) progreso asyncio (as_completed) — Colab/Jupyter-safe”) async def io_task(i: int): espera asyncio.sleep(random.uniform(0.02, 0.12)) return i, random.random() async def run_async(): tareas = [asyncio.create_task(io_task(i)) for i in range(80)]
resultados = []
para fut en tqdm(asyncio.as_completed(tareas), total=len(tareas), desc=”tareas asíncronas”): resultados.append(esperar fut) devolver resultados resultados = esperar run_async() print(“async hecho:”, len(resultados), “resultados”)