feat: Semaine 9
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import random, asyncio, time
|
||||
|
||||
async def fetch_posts(user):
|
||||
delay = random.uniform(0.5, 2.0)
|
||||
print(f"Post coroutine : récupération des postes pour l'utilisateur {user["name"]}.")
|
||||
await asyncio.sleep(delay)
|
||||
posts = [f"Post {i} par l'utilisateur {user["name"]}" for i in range (1, 3)]
|
||||
print(f"Post coroutine : récupération de {len(posts)} posts pour l'utilisateur {user["name"]} - delay : {delay:.2f}s.")
|
||||
for post in posts:
|
||||
print(f"--- {post} ---")
|
||||
|
||||
async def fetch_user(user_id):
|
||||
delay = random.uniform(0.5, 2.0)
|
||||
print(f"Utilisateur coroutine : récupération de l'utilisateur {user_id=}.") # En mettant le = à la fin, il va écrire user_id=[valeur]
|
||||
await asyncio.sleep(delay)
|
||||
user = {"id": user_id, "name": f"User{user_id}"}
|
||||
print(f"Utilisateur coroutine : récupération de l'utilisateur {user_id=} - delay : {delay:.2f}s.")
|
||||
return user
|
||||
|
||||
async def get_user_with_posts(user_id):
|
||||
user = await fetch_user(user_id)
|
||||
await fetch_posts(user)
|
||||
|
||||
async def main():
|
||||
user_ids = [1,2,3]
|
||||
start = time.perf_counter()
|
||||
await asyncio.gather(
|
||||
# liste de compréhension. Dans un tuple, elle donne un "Générateur".
|
||||
# L'étoile fait donner l'instruction pour autant d'éléments que
|
||||
# nécessaire
|
||||
*(get_user_with_posts(user_id) for user_id in user_ids)
|
||||
)
|
||||
print(f"Temps total d'exécution : {time.perf_counter() - start:.2f}s.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
random.seed(444)
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user