Meta tags:
description= Aprende Python asyncio desde cero: corrutinas, el bucle de eventos, tareas, gather, timeouts y colas — con ejemplos ejecutables y explicaciones claras.;
Headings (most frequently used words):
asyncio, de, await, async, qué, con, python, por, existe, corrutinas, def, el, bucle, eventos, ejecutar, tareas, forma, concurrente, manejo, excepciones, timeouts, wait_for, queue, para, patrones, productor, consumidor, vs, threading, errores, comunes, resumen, referencia, rápida, práctica, puedes, esperar, gather, create_task, salida, intercalada,
Text of the page (most frequently used words):
#asyncio (95), #python (62), await (44), async (38), def (31), una (30), print (24), para (22), main (22), con (21), bucle (21), task (21), sleep (19), api (19), run (18), corrutina (17), name (17), eventos (16), copiar (16), done (16), aprender (15), import (15), gather (14), matplotlib (14), queue (13), las (13), que (13), start (13), mysql (13), elementos (12), mongodb (12), corrutinas (11), time (11), item (11), result (10), tareas (9), for (9), coro (9), código (9), usa (9), return (9), los (8), threading (8), ejecutar (8), forma (8), coroutine (8), create_task (8), delay (8), fetching (8), fetch (8), listas (8), html (7), concurrente (7), archivos (7), dentro (7), cuando (7), tuplas (7), excepciones (6), por (6), hilo (6), crear (6), data (6), from (6), eliminar (6), métodos (6), datos (6), w3docs (5), try (5), wait_for (5), second (5), función (5), resultado (5), trabajo (5), results (5), end (5), string (5), strings (5), primeros (5), pasos (5), tutorial (5), variables (5), lista (5), formatter (5), color (5), json (4), generator (4), práctica (4), timeouts (4), qué (4), the (4), sin (4), como (4), segundo (4), esperar (4), cuándo (4), del (4), usar (4), red (4), devuelve (4), lugar (4), cada (4), consumed (4), produced (4), tarea (4), except (4), ejecuta (4), ver (4), inmediato (4), mientras (4), fetch_data (4), step (4), perf_counter (4), espera (4), regresión (4), diccionarios (4), acceder (4), todos (3), code (3), encoder (3), editor (3), cuestionarios (3), ejercicios (3), php (3), javascript (3), css (3), desde (3), patrones (3), productor (3), consumidor (3), manejo (3), this (3), timeouterror (3), does (3), to_thread (3), consumidores (3), timeout (3), múltiples (3), recoger (3), resultados (3), síncrono (3), bucles (3), operation (3), llamada (3), bloqueantes (3), hilos (3), objeto (3), esto (3), bibliotecas (3), cambia (3), true (3), error (3), lanzar (3), ambas (3), count_down (3), cómo (3), más (3), background_job (3), planifica (3), hasta (3), otra (3), step_one (3), world (3), greet (3), programa (3), funciones (3), cadenas (3), recorrer (3), unir (3), tools (3), italiano (2), português (2), español (2), français (2), русский (2), deutsch (2), english (2), beautifier (2), diff (2), password (2), herramientas (2), java (2), git (2), libros (2), ejemplos (2), fragmentos (2), web (2), resumen (2), referencia (2), rápida (2), errores (2), comunes (2), existe (2), page (2), csv (2), was (2), suspends (2), only (2), coroutines (2), blocks (2), program (2), what (2), inside (2), bloqueante (2), desacoplar (2), productores (2), añadir (2), plano (2), iniciar (2), ejecutan (2), directamente (2), anidados (2), ejecución (2), blocking_task (2), envuelve (2), llamadas (2), bloquear (2), returns (2), verdadero (2), paralelismo (2), cpu (2), ayuda (2), sigue (2), ligadas (2), pero (2), módulo (2), join (2), producer (2), consumer (2), none (2), while (2), put (2), range (2), cola (2), otro (2), timed (2), out (2), cancelled (2), slow_operation (2), segundos (2), oops (2), else (2), return_exceptions (2), good (2), bad (2), raise (2), lanza (2), excepción (2), otras (2), valores (2), caught (2), something (2), went (2), wrong (2), valueerror (2), risky_task (2), normal (2), ellas (2), seconds (2), salida (2), quieras (2), todas (2), result1 (2), result2 (2), total (2), compute (2), entrada (2), estándar (2), programas (2), listo (2), puedes (2), future (2), value (2), suspende (2), está (2), hello (2), llama (2), solo (2), dos (2), escribir (2), and (2), handling (2), números (2), clases (2), limit (2), colección (2), delete (2), ordenar (2), base (2), cuadrícula (2), dispersión (2), distribución (2), introducción (2), conjuntos (2), set (2), sets (2), cambiar (2), agregar (2), hash (2), 2026, derechos, reservados, hecho, desarrolladores, idioma, política, privacidad, contacto, acerca, empresa, tutoriales, gratuitos, 2014, next, previous, yes, helpful, comprobar, raises, after, creates, new, thread, that, sleeps, current, allowing, other, entire, like, congelar, plazo, límite, planificar, coros, usarlo, patrón, notebooks, jupyter, celdas, notebook, instala, permitir, nest_asyncio, simulates, slow, blocking, lento, ajustado, congela, todo, ejecutarlas, pool, correct, not, bug, llamar, hace, nada, emite, ayudar, detectar, runtimewarning, never, awaited, olvidar, recurre, concurrent, futures, processpoolexecutor, multiprocessing, controles, puedas, compatibles, ejemplo, dependas, terceros, puedan, hacerse, asyncpg, aiohttp, requiere, bloqueos, evitar, condiciones, carrera, seguro, estado, compartido, mayor, recursos, muy, baja, sobrecarga, gil, limita, siendo, ligado, usan, muchas, disco, mejor, apropiativo, cooperativo, ceden, modelo, concurrencia, tanto, permiten, avance, hacen, manera, diferente, saber, han, procesado, task_done, break, get, sentinel, signal, consumers, stop, segura, soporte, ideal, genera, procesa, importante, producción, donde, servidor, bloqueado, modo, mantendría, bloqueada, indefinidamente, cancela, termina, número, dado, lanzando, exception, isinstance, runtimeerror, cancelan, defecto, vuelve, haces, pasa, retorno, lanzadas, propagan, través, igual, bloque, comparten, alterna, entre, útil, acción, observar, intercalan, intercalada, empiece, planifiques, cancelarla, adelante, grupo, fijo, juntas, both, tasks, are, already, scheduled, collects, their, ejecute, pronto, diferencia, actual, ejecutándose, tres, comienzan, tiempo, transcurrido, coincide, suma, lenta, proporcionadas, ejecuten, sus, mismo, orden, mayoría, aplicaciones, nunca, necesitas, gestionar, encarga, creación, cierre, yield, control, once, punto, crea, nuevo, dada, finalización, cierra, planificador, mantiene, llega, luego, siguiente, elemento, generalmente, hay, fuera, cualquier, método, __await__, creado, wait, finish, suspend, awaitable, produce, puede, suspendida, properly, class, type, calling, object, nothing, printed, yet, definida, llamarla, cuerpo, debe, ser, manejado, secuencial, aunque, necesita, pausa, inicia, terminan, aproximadamente, whole, considera, apis, tras, recurrir, manejar, son, difieren, regulares, este, capítulo, cubre, permite, usando, palabras, clave, bloquearse, respuestas, lecturas, inmediatamente, retomando, convierte, herramienta, adecuada, ligados, scrapers, clientes, servidores, chat, aprende, cero, colas, ejecutables, explicaciones, claras, peticiones, http, pytest, paquetes, entornos, virtuales, tooling, best, practices, concurrency, random, sys, itertools, collections, standard, library, sumar, invertir, duplicados, how, enumeraciones, abstractas, encapsulamiento, polimorfismo, dataclasses, static, classmethod, property, mágicos, advanced, oop, sentencia, match, enumerate, zip, map, comprensiones, gestores, contexto, recursión, closures, generadores, decoradores, args, kwargs, sugerencias, tipo, intermediate, actualización, consulta, find, insertar, update, drop, table, order, where, select, insert, tabla, vecinos, cercanos, curva, auc, roc, validación, cruzada, agregación, bootstrap, means, categóricos, búsqueda, logística, agrupamiento, jerárquico, matriz, confusión, árbol, decisión, train, test, escalar, múltiple, polinomial, lineal, diagrama, percentil, desviación, media, mediana, moda, machine, learning, gráficos, pastel, histogramas, barras, subplot, etiquetas, líneas, marcadores, trazado, pyplot, django, scipy, pandas, numpy, modules, leer, file, formateo, usuario, pip, regex, matemáticas, fechas, módulos, ámbito, iteradores, herencia, objetos, arrays, lambda, operadores, booleanos, casting, tipos, comentarios, sintaxis, nombres, actualizar, desempaquetar, tupla, segmentación, home, modificar, iterar, sobre, comprensión, globales, formato, caracteres, escape, diccionario, concatenar, asignar, conjunto, sesión, buscar, formatters, url, reverse, sha256, md5, length, calculator, colors, hsl, hex, mixer, converter, picker, general, cursos, explicado,
Text of the page (random words):
python variables en python eliminar elementos eliminar elementos de una lista eliminar elementos de un set métodos de conjuntos segmentación de cadenas ordenar listas métodos de string métodos de tupla desempaquetar tuplas actualizar tuplas nombres de variables introducción a python primeros pasos con python sintaxis de python comentarios en python variables en python tipos de datos en python números en python casting en python strings de python booleanos en python operadores de python listas de python tuplas de python diccionarios en python python if else bucles while en python bucles for en python funciones en python python lambda arrays en python clases y objetos en python herencia en python iteradores de python ámbito en python módulos de python fechas en python matemáticas en python python json python regex python pip python try except entrada de usuario en python formateo de cadenas en python file handling manejo de archivos en python leer archivos en python escribir crear archivos en python eliminar archivos en python python modules tutorial de numpy tutorial de pandas tutorial de scipy tutorial de django python matplotlib introducción a matplotlib primeros pasos con matplotlib matplotlib pyplot trazado con matplotlib marcadores de matplotlib líneas en matplotlib etiquetas en matplotlib cuadrícula de matplotlib subplot de matplotlib dispersión en matplotlib barras en matplotlib histogramas con matplotlib gráficos de pastel con matplotlib machine learning primeros pasos media mediana moda desviación estándar percentil distribución de datos distribución normal de datos diagrama de dispersión regresión lineal regresión polinomial regresión múltiple escalar train test árbol de decisión matriz de confusión agrupamiento jerárquico regresión logística búsqueda en cuadrícula datos categóricos k means agregación bootstrap validación cruzada curva auc roc k vecinos más cercanos python mysql primeros pasos con mysql mysql crear base de datos mysql crear tabla mysql insert mysql select mysql where mysql order by mysql delete mysql drop table mysql update mysql limit mysql join python mongodb primeros pasos con mongodb crear base de datos mongodb mongodb crear colección insertar en mongodb mongodb find consulta mongodb ordenar en mongodb mongodb delete eliminar colección en mongodb actualización en mongodb mongodb limit intermediate python f strings sugerencias de tipo args kwargs decoradores generadores closures recursión gestores de contexto comprensiones enumerate zip map sentencia match advanced oop métodos mágicos property static y classmethod dataclasses polimorfismo encapsulamiento clases abstractas enumeraciones python how to eliminar duplicados en listas invertir un string sumar dos números error handling and the standard library lanzar excepciones collections itertools os sys random archivos csv concurrency in python asyncio threading python tooling and best practices entornos virtuales paquetes pytest peticiones http python asyncio async y await aprende python asyncio desde cero corrutinas el bucle de eventos tareas gather timeouts y colas con ejemplos ejecutables y explicaciones claras el módulo asyncio de python te permite escribir código concurrente en un solo hilo usando las palabras clave async y await en lugar de bloquearse mientras espera respuestas de red o lecturas de archivos un programa asyncio suspende la tarea en espera y cambia inmediatamente a otro trabajo retomando cuando el resultado está listo esto lo convierte en la herramienta adecuada para programas ligados a i o como scrapers web clientes api y servidores de chat este capítulo cubre qué son las funciones async corrutinas y cómo difieren de las funciones regulares el bucle de eventos y cómo asyncio planifica el trabajo esperar resultados ejecutar tareas de forma concurrente con asyncio gather y asyncio create_task manejar excepciones y timeouts dentro de código async el asyncio queue para patrones productor consumidor cuándo usar asyncio y cuándo recurrir a threading en su lugar por qué existe asyncio considera un programa que llama a dos apis una tras otra import time def fetch name delay time sleep delay blocks the whole program return f data from name start time perf_counter r1 fetch api a 1 r2 fetch api b 1 print f done in time perf_counter start 1f s done in 2 0s copiar ambas llamadas se ejecutan de forma secuencial 2 segundos en total aunque cada llamada solo necesita 1 segundo de espera con asyncio el programa pausa fetch api a mientras espera inicia fetch api b de inmediato y ambas terminan en aproximadamente 1 segundo import asyncio import time async def fetch name delay await asyncio sleep delay suspends only this coroutine return f data from name async def main start time perf_counter r1 r2 await asyncio gather fetch api a 1 fetch api b 1 print f done in time perf_counter start 1f s done in 1 0s asyncio run main copiar corrutinas async def y await una función definida con async def se llama función corrutina llamarla no ejecuta el cuerpo de inmediato devuelve un objeto corrutina que debe ser manejado por el bucle de eventos async def greet name print f hello name calling it returns a coroutine object nothing is printed yet coro greet world print type coro class coroutine run it properly import asyncio asyncio run greet world hello world copiar dentro de una corrutina await suspende la ejecución hasta que el awaitable otra corrutina una task o un future produce un resultado el bucle de eventos puede ejecutar otras corrutinas mientras una está suspendida import asyncio async def step_one print step 1 start await asyncio sleep 1 suspend for 1 second print step 1 end return result 1 async def main value await step_one wait for step_one to finish print value asyncio run main step 1 start step 1 end result 1 copiar qué puedes esperar con await otra corrutina async def un asyncio task creado con asyncio create_task un asyncio future cualquier objeto con un método __await__ no puedes usar await fuera de una función async def el bucle de eventos el bucle de eventos es el planificador de asyncio mantiene una cola de corrutinas y tareas ejecuta cada una hasta que llega a un await y luego cambia al siguiente elemento listo generalmente hay un bucle de eventos por hilo asyncio run coro es el punto de entrada estándar para los programas asyncio crea un nuevo bucle de eventos ejecuta la corrutina dada hasta su finalización cierra el bucle y devuelve el resultado import asyncio async def compute await asyncio sleep 0 yield control once return 6 7 result asyncio run compute print result 42 copiar para la mayoría de las aplicaciones nunca necesitas gestionar el bucle directamente asyncio run se encarga de la creación y el cierre ejecutar tareas de forma concurrente asyncio gather asyncio gather coroutines planifica todas las corrutinas proporcionadas para que se ejecuten de forma concurrente y devuelve sus resultados en el mismo orden import asyncio async def fetch_data name delay print f start fetching name await asyncio sleep delay print f done fetching name return f data from name async def main results await asyncio gather fetch_data api a 1 fetch_data api b 2 fetch_data api c 1 print results asyncio run main start fetching api a start fetching api b start fetching api c done fetching api a done fetching api c done fetching api b data from api a data from api b data from api c copiar las tres corrutinas comienzan de inmediato el tiempo total transcurrido coincide con la corrutina más lenta 2 s no con la suma 4 s asyncio create_task asyncio create_task coro envuelve una corrutina en una task y la planifica para que se ejecute pronto a diferencia de gather crear una tarea la lanza en segundo plano mientras la corrutina actual sigue ejecutándose import asyncio async def background_job name delay print f name start await asyncio sleep delay print f name end return f name done async def main t1 asyncio create_task background_job task a 1 t2 asyncio create_task background_job task b 2 both tasks are already scheduled await collects their results result1 await t1 result2 await t2 print result1 result2 asyncio run main task a start task b start task a end task b end task a done task b done copiar usa create_task cuando quieras que una tarea empiece de inmediato y planifiques recoger su resultado o cancelarla más adelante usa gather cuando quieras lanzar un grupo fijo de corrutinas y esperar a todas ellas juntas salida intercalada una forma útil de ver el bucle de eventos en acción es observar cómo se intercalan las tareas import asyncio async def count_down name seconds for i in range seconds 0 1 print f name i await asyncio sleep 1 print f name done async def main await asyncio gather count_down task a 3 count_down task b 2 asyncio run main task a 3 task b 2 task a 2 task b 1 task a 1 task b done task a done copiar ambas tareas comparten un hilo el bucle de eventos alterna entre ellas en cada await asyncio sleep 1 manejo de excepciones las excepciones lanzadas dentro de una corrutina se propagan a través de await igual que en código síncrono usa un bloque try except normal import asyncio async def risky_task await asyncio sleep 0 1 raise valueerror something went wrong async def main try await risky_task except valueerror as e print f caught e asyncio run main caught something went wrong copiar cuando se usa asyncio gather si una corrutina lanza una excepción las otras no se cancelan por defecto pero la excepción se vuelve a lanzar cuando haces await en la llamada a gather pasa return_exceptions true para recoger las excepciones como valores de retorno en su lugar import asyncio async def good return ok async def bad raise runtimeerror oops async def main results await asyncio gather good bad return_exceptions true for r in results if isinstance r exception print f error r else print f result r asyncio run main result ok error oops copiar timeouts con asyncio wait_for asyncio wait_for coro timeout ejecuta una corrutina y la cancela si no termina dentro del número de segundos dado lanzando asyncio timeouterror import asyncio async def slow_operation await asyncio sleep 5 return 42 async def main try result await asyncio wait_for slow_operation timeout 1 0 print result except asyncio timeouterror print timed out operation cancelled asyncio run main timed out operation cancelled copiar esto es importante para el código de red en producción donde un servidor bloqueado de otro modo mantendría una tarea bloqueada indefinidamente asyncio queue para patrones productor consumidor asyncio queue es una cola segura para hilos y con soporte async es ideal para desacoplar productores código que genera trabajo de consumidores código que lo procesa import asyncio async def producer queue for i in range 1 4 print f produced item i await queue put i await asyncio sleep 0 1 await queue put none sentinel to signal consumers to stop async def consumer queue while true item await queue get if item is none break print f consumed item item async def main q asyncio queue await asyncio gather producer q consumer q asyncio run main produced item 1 consumed item 1 produced item 2 consumed item 2 produced item 3 consumed item 3 copiar para múltiples consumidores usa queue task_done y queue join para saber cuándo se han procesado todos los elementos asyncio vs threading tanto asyncio como el módulo threading de python permiten que el trabajo avance de forma concurrente pero lo hacen de manera diferente asyncio threading modelo de concurrencia cooperativo las corrutinas ceden en await apropiativo el so cambia de hilo mejor para muchas tareas ligadas a i o red disco tareas ligadas a i o que usan bibliotecas bloqueantes trabajo ligado a cpu no ayuda sigue siendo un hilo no ayuda el gil limita el verdadero paralelismo sobrecarga muy baja sin hilos del so mayor cada hilo usa recursos del so estado compartido seguro dentro de un bucle de eventos requiere bloqueos para evitar condiciones de carrera usa asyncio cuando controles el código de i o y puedas usar bibliotecas compatibles con async por ejemplo aiohttp asyncpg usa threading cuando dependas de bibliotecas bloqueantes de terceros que no puedan hacerse async para verdadero paralelismo en cpu recurre a multiprocessing o concurrent futures processpoolexecutor en su lugar errores comunes olvidar await llamar a una función async sin await devuelve un objeto corrutina y no hace nada python emite un runtimewarning coroutine was never awaited para ayudar a detectar esto async def main asyncio sleep 1 bug returns a coroutine does not sleep await asyncio sleep 1 correct copiar bloquear el bucle de eventos ejecutar código síncrono lento un bucle ajustado una llamada de red bloqueante time sleep dentro de una corrutina congela todo el bucle de eventos envuelve las llamadas bloqueantes con asyncio to_thread python 3 9 para ejecutarlas en un pool de hilos sin bloquear import asyncio import time def blocking_task time sleep 2 simulates a slow blocking operation return done async def main result await asyncio to_thread blocking_task print result asyncio run main done copiar usar asyncio run dentro de un bucle en ejecución los notebooks de jupyter ya ejecutan un bucle de eventos usa await coro directamente en las celdas del notebook o instala nest_asyncio para permitir bucles anidados resumen de referencia rápida patrón cuándo usarlo asyncio run main iniciar el bucle de eventos desde código síncrono await coro ejecutar una corrutina y esperar su resultado asyncio gather coros ejecutar múltiples corrutinas de forma concurrente recoger todos los resultados asyncio create_task coro planificar una corrutina como una task en segundo plano asyncio wait_for coro timeout n añadir un plazo límite a una corrutina asyncio queue desacoplar productores de consumidores asyncio to_thread fn ejecutar una función bloqueante sin congelar el bucle práctica práctica what does await asyncio sleep 1 do inside a coroutine what does await asyncio sleep 1 do inside a coroutine it blocks the entire program for 1 second like time sleep 1 it suspends only the current coroutine for 1 second allowing other coroutines to run it creates a new thread that sleeps for 1 second it raises a timeouterror after 1 second comprobar was this page helpful yes no previous archivos csv next threading on this page por qué existe asyncio corrutinas async def y await el bucle de eventos ejecutar tareas de forma concurrente manejo de excepciones timeouts con asyncio wait_for asyncio queue para patrones productor consumidor asyncio vs threading errores comunes resumen de referencia rápida práctica w3docs tutoriales ejemplos ejercicios fragmentos y cuestionarios gratuitos para la web desde 2014 libros aprender html aprender css aprender javascript aprender git aprender java aprender php aprender python práctica ejercicios cuestionarios editor try it herramientas html editor password generator html encoder code diff json beautifier empresa acerca de contacto política de privacidad idioma engl...
|