1
+ from time import sleep
2
+ import time
3
+ import asyncio
4
+
5
+ # EJERCICIO:
6
+ # Utilizando tu lenguaje, crea un programa capaz de ejecutar de manera
7
+ # asíncrona una función que tardará en finalizar un número concreto de
8
+ # segundos parametrizables. También debes poder asignarle un nombre.
9
+ # La función imprime su nombre, cuándo empieza, el tiempo que durará
10
+ # su ejecución y cuando finaliza.
11
+
12
+ async def task (name : str , seconds : int ):
13
+ print (f"Iniciando { name } ." )
14
+ await asyncio .sleep (seconds )
15
+ print (f"{ name } tardara { seconds } segundos." )
16
+ return f"{ name } termino."
17
+
18
+ async def main ():
19
+ start = time .time ()
20
+
21
+ answer = await asyncio .gather (
22
+ task ("Descarga" , 6 ),
23
+ task ("Inicialización" , 3 ),
24
+ task ("Petición http" , 2 )
25
+ )
26
+
27
+ end = time .time ()
28
+ print (f"\n Respuestas: { answer } " )
29
+ print (f"Tiempo de ejecución del programa: { end - start } s." )
30
+
31
+ # asyncio.run(main())
32
+
33
+ # DIFICULTAD EXTRA (opcional):
34
+ # Utilizando el concepto de asincronía y la función anterior, crea
35
+ # el siguiente programa que ejecuta en este orden:
36
+ # - Una función C que dura 3 segundos.
37
+ # - Una función B que dura 2 segundos.
38
+ # - Una función A que dura 1 segundo.
39
+ # - Una función D que dura 1 segundo.
40
+ # - Las funciones C, B y A se ejecutan en paralelo.
41
+ # - La función D comienza su ejecución cuando las 3 anteriores han
42
+ # finalizado.
43
+
44
+ async def extra ():
45
+ await asyncio .gather (
46
+ task ("Función C" , 3 ),
47
+ task ("Función B" , 2 ),
48
+ task ("Función A" , 1 )
49
+ )
50
+ await task ("Función D" , 1 )
51
+
52
+ asyncio .run (extra ())
0 commit comments