Session du 18 novembre 2024 à 21h00
TOSA & Certifications
Librairie Standard & Modules
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Session de mentorat TOSA
Stéphane nous présentera asyncio.
00:00:00 :Donc, la dernière fois avec Gab, on a vu tout ce qui était threading et multiprocessing.Pour rappel, parce que ça va avoir son importance pour la suite, le threading permettait d'optimiserplusieurs exécutions en utilisant les temps morts du processeur.
00:00:23 :C'est-à-dire qu'au final, le résultat final est affiché lorsque toutes les tâches sontexécutées, mais par contre, s'accumulait le temps d'exécution de toutes les tâches.D'accord ? Je suppose que c'est lié à l'explication qu'il nous avait donnée là où on avait
00:00:39 :blagué sur le fait qu'il allait peut-être faire péter son M1.Au final, le fait de répéter quatre fois la même opération, bien un threading, onavait 20 secondes, je crois, de mémoire et chaque exécution se faisait, durait 5 secondeschacune et chaque exécution se faisait.
00:00:56 :Pour le multiprocessing, là, on est sur quelque chose d'un peu plus optimisé où on utilisaitun thread du processeur par fonction et là, du coup, on avait simplement le temps d'uneseule fonction qui exécutait les quatre fonctions en même temps.
00:01:12 :C'est bon pour ça ?N'hésite pas à s'il vous plaît.Oui, ça va.Non, c'est bon, c'est bon.Donc là, aujourd'hui, ce qu'on va voir, c'est Asyncio qui vient compléter un petit peu tout ça.
00:01:29 :Le truc d'Asyncio, c'est qu'on va se rapprocher un peu de threading, mais sous une forme différenteet aussi avec des avantages différents.Alors pour ça, j'ai pris le parti de prendre un exemple de base.
00:01:44 :On va imaginer, par exemple, quand on va dans un café, on va commander un café accompagnéd'un cookie.Pour préparer le tout, faire couler un café ou faire chauffer un cookie, forcément, çaprendra le même temps.
00:02:01 :Donc là, on est sur des exemples assez parlants pour voir tout ce qui est Asyncio.On va déjà voir comment ça se passe de base.
00:02:09 :Donc, on va préparer une petite commande pour partager mon écran.Alors, attends.Pour le partage d'écran.Tu dis que t'as une galère d'influence.Hop, je vais aller essayer de la trouver.
00:02:32 :Voilà.Alors, stack.Qu'est-ce qu'il y a ? J'y arrive pas.Il ne veut pas me laisser partager mon écran.Ou alors, je me suis planté de commande.
00:02:57 :C'est une autorisation dans le navigateur, peut-être, non ?Je crois, oui.La première fois, normalement, il faut accepter.Il ne me propose que de partager le Chrome, en fait.
00:03:10 :Trop bizarre.Alors, fenêtre.Ah, d'accord, attends.On va faire ça, voilà.Je pense que c'est ça.Désolé, c'est là pour le petit contre-temps.C'est normal, c'est la première fois que t'en fais un.
00:03:25 :La première fois, j'arrive même pas à me connecter.Ok, attends, on va modifier un peu.Tac, tac.Je pense que ça devrait être bon.Si tu le dis, c'est que je regrette.
00:03:39 :Si moi, je ne peux pas.Alors, on va voir ça.Non, il ne veut pas.Ah ouais, parce qu'il veut que je quitte Google Chrome et que je le relance.
00:03:50 :Ben, relance, reviens.Relance, reviens.Mais j'ai eu le coup la première fois, moi.C'est ça.Les aléas du direct.Sûrement, c'est le truc.Comme tu as dit pour la première fois, il faut autoriser sur le navigateur.
00:04:15 :J'avais eu le coup sur mon Linux.Alors.Ah, ben voilà, ça marche mieux.Ok, je coupe le micro.Hop là, est-ce que c'est bon ?
00:04:27 :Vous voyez mon écran ?Ouais, ouais, ouais.Ok, c'est assez gros pour vous ?Il faut que je grossisse un peu plus.J'ai déjà copié le code, peut-être.
00:04:37 :Ouais, tu peux zoomer juste un peu, peut-être.Ouais, pour PyCharm, t'es bien à 150 au moins.Alors.Le zoom, il est...J'aurais dû préparer tout ça.
00:04:49 :Voilà, comme si on apprend nos erreurs.Hop.Windows.Le zoom, il est où dans PyCharm ?Dans Settings, Apparences de tête.Je n'utilise plus PyCharm, mais je me suis encore...
00:05:03 :Tu le vois ou pas ?Bon, c'est sur Windows ?Contrôle plus, je pense.Windows, Contrôle plus.Je crois que PyCharm, il en veut pas du Contrôle plus.
00:05:19 :Non, il en veut pas.On voit à droite de PyCharm, t'as un...Attends.Tu me lances un PyCharm, si tu veux.Je vais te leur le remettre.
00:05:30 :La capture.Genre, s'il ouvre ça...Quand tu es dans PyCharm,tu cliques sur...À droite de la pomme, t'es sur Mac, là ?Ouais.Clique sur Settings.
00:05:44 :Et tu as Apparences.Ouais, c'est bon, je l'ai.Comme ça, c'est mieux.Là, ouais, c'est pas mal.Je peux te mettre un petit peu plus.
00:05:54 :Allez, boum.Très bien, là.On reprend.Alors,ce que j'ai fait,c'est la commande du café.Voilà.D'abord, on va prendreque le café, on va dire qu'il prend5 secondes à être préparé.
00:06:14 :Donc là, on a le café.J'ai fait une petite fonctionoù il précise qu'il commence à préparer le café,que la préparation est terminée.Et il retourne que le café est prêt.
00:06:24 :En gros, ça suit le fait que le serveurapporte le café.Pareil pour le cookie.On commence à préparer le cookie.Et là, le cookie prend, mettons, 3 secondesà être préparé.
00:06:36 :Pareil, il retourne le cookie.Donc ça, c'est les fonctions de basepour préparer un café, préparer un cookie.Dans la fonction commande,là, c'estSina qui se pointe et ditqu'il veut un café, un cookie.
00:06:50 :Donc, du coup,pour la boisson,qu'il a commandé un café,et pour le gâteau, on a commandé un cookie.Il imprime le résultat.En gros, il rapportele cookie, le café et le cookie.
00:07:04 :J'ai misun petit timer pour qu'on se rende un petit peu comptedes subtilités, des différencesde temps entre les différentes versionsque je vais vous présenter ce soir.
00:07:14 :Je lance le script.Donc là, il commenceà préparer le café.Il aterminé le café. Il prépare le cookie.Le café est prêt.Et on a été servi.
00:07:28 :Ça n'a pas pris un temps de monstre,mais on voit que c'est quand mêmeassez différent.Et ça a pris 8 secondes.Donc, on est bien sur la totaleentre le temps de préparation de notre caféet le tempsde préparation avec le cookie.
00:07:44 :Maintenant, on va voir la même chose,mais avec ce qu'on a vula semaine dernière avec le threading.Comme ça, ça va nous remettre un petit peu dans le bain de ce qu'on a vula semaine dernière.
00:07:56 :Je reprends.Je vais d'abordcommenter tout ça.Avec du threading.Donc, toujours pareil,on reprend lemodule time.On garde nos fonctions caféet cookie. On ne change rien là-dessus.
00:08:38 :Là où ça change, c'est quand on va faireun mauvaiscookie collé. Et voilà.Voilà.Je ne sais pas si c'estle fait de faire de la diffusion en même temps,mais ça rameun petit peu. Voilà.
00:09:02 :Donc,là où ça change principalement,avec l'exemple avec le thread, c'estdans la manière de traiter la commande.Donc là,on crée un premier threadoù on va créer le café.
00:09:16 :Un deuxième thread qui vaservir à créer le cookie.Comme on a vu la semaine dernière,on démarre le thread avec start.Donc T1, T2, start.
00:09:26 :Pour qu'il soit synchronisé,on lance le join.On va imprimerun fichier T1, T2 pour avoir le retour de notrecafé et de notre cookie.
00:09:36 :Comme on l'avait fait précédemment.Maintenant, on va voir ce qui se passe.Donc là, tout de suite,on voit qu'il commence à préparer le caféet le cookie en même temps.
00:09:46 :On a gagné du temps,on est à 5 secondes.Mais par contre,je vais essayer de monter un peu ça pour que ça soit mieux.
00:09:54 :C'est pas grave.Vous remarquez làqu'on a autre chose.Voilà.Ici, là où on devra avoir notre caféet notre cookie,on a la fonction de notre caféet la fonction de notre cookie.
00:10:12 :C'est-à-dire qu'au final,on n'a pas eu notre café et notre cookie réellement,mais simplementla manière dont ils ont été préparés.Pour résumer.Déjà, on a commandé un café et un cookie,on n'a plus rien.
00:10:26 :On a gagné du temps.On est à 5 secondes puisque les deuxse sont synchronisés,mais on n'a toujours pas eu le résultatde notre commande.
00:10:36 :Et c'est là qu'on va attaqueravec Asyncio.Jusque là, pour tout le monde, ça va.On est revenu sur un peu les basesqu'on avait vues la semaine dernière.
00:10:46 :Tout ça.Là.Avec Asyncio.Avec Asyncio.Je vais un peu plus vous détaillerle script.OK.Alors, tout d'abord,on a apporté le module Asyncio en plus.
00:11:24 :D'accord ?Comme on a apporté le screening et ainsi de suite.Là, il faut apporter le module Asyncio.La première différence que vous pouvez remarquer,c'est que là, on modifienos fonctions café et cookie.
00:11:36 :C'est-à-dire que pour qu'elles soient prises en compteavec le principe d'Asyncio,il faut rajouter un petit mot-clédevant la définition de la fonctionqui est Async.
00:11:46 :Donc ça, ça va permettre, aprèsle module Asyncio, de traitercette fonction comme une fonctionasynchrone.Pareil pource qui est du slip. On est obligé de
00:11:58 :remplacer par une autre fonction pour simulerl'attente, parce que Asyncioa son propre module de slip avec lequelil fonctionne. Et donc là, on va rajouter
00:12:06 :un petit mot-clé qui s'appelle Await. Alors Await,on va le réutiliser aussi un peu plus tard parce qu'ilsert aussi à permettrela synchronisation de différentes fonctions.
00:12:14 :Donc dans le cas deAsyncio, on utilise ce mot-clé Await qui dit« Tu patientes et tu exécutes cette fonction-là. »Donc là,c'est ce qui va nous permettre de simuler le temps de servicede notre café.
00:12:26 :On continue comme dans la fonction de base à retournernotre café.Et on fait la même chose pour lecookie.Là où ça se change aussi dans lacommande, c'est que toujourson rajoute le Asyncdevant notre commande.
00:12:42 :Et là, voilà commenton va en fait, avec Asyncio,commencer à mettredes commandes pour qu'elles fonctionnent ensemble.Donc, vous voyezle petit mot-clé là, juste là.
00:12:54 :Asyncio.gazerA l'intérieur,les définitions, c'est bon, voilà.On va mettrenos fonctions de la même manièrequ'on les appellerait au cours de notre script.C'est-à-dire que là, on va vraimentjuste mettre café entre parenthèses.
00:13:10 :Et si admettons, on passaitune commande dans la fonctioncafé pour dire si on voulait du lait,du sucre ou autre.Là, on pourrait passer exactementdans les parenthèsesnos arguments pour direon a fait lait égale crou,sucre égale crou, et ainsi de suite.
00:13:28 :C'est bon pour tout le monde ?Donc là, avec ça,on a faitle nécessaire pour que nos fonctionspuissent fonctionnerde manière asynchrone.Pour récupérer le résultatde boisson et gâteau,on va utiliser encore ce fameux mot-cléawait command.
00:13:52 :En fait, ce qui va se passer,c'est que là, il va attendrele résultat que vont envoyerles deux fonctions qui sont associéesavec AsyncioGatherdans le batch command.
00:14:04 :Et quand il aura ce batch,dans l'ordre, il va renvoyerles résultats des fonctions. C'est-à-dire que là,j'ai mis café, il va me renvoyer dans boisson.
00:14:12 :Cookie, il va me renvoyer dans gâteau.Admettons, j'aurais une troisième fonction,je ne sais pas, moi,par exemple, serviette.C'est un hasard.Ça va me mettre des heuresparce que la fonction n'existe pas.
00:14:26 :À ce moment-là, si je voulais avoir le résultat de serviette,il faudrait que je rajoute un mot-clé.Serviette.Comme ça, dans la variable serviette,ça me donnerait le retour de la fonction serviette.
00:14:36 :Et ça, vous pouvez le faireavec autant de fonctions que vous voulez.Le tout, c'est que si vous devez récupérer des mots-cléspour les fonctions, faites-ledans l'ordre. Petit conseil,
00:14:46 :si parmi les fonctions que vous mettez dedans,il y en a une qui ne va pas renvoyer de valeur,bien entendu,ordonnez vos fonctionsdans votre geyser, de sorte à ce qu'il n'y ait pas d'erreur.
00:14:56 :Si par exemple, cookie,on va faire plutôt comme ça.Admettons que la fonction serviettene renvoie rien.Si je vous laisse comme ça, ça ne posera pas de problème.
00:15:10 :Par contre, si je mettais serviettedevant cookie, là,comme serviette renvoie un non, mon cookiedans mon gâteau,j'aurai non au lieu d'avoir mon cookie.
00:15:20 :D'accord ?On va retirer çapour ne pas qu'on ait d'erreur par la suite.Voilà.Et donc maintenant, on va pouvoirlancer notre fonction et voirle résultat.
00:15:38 :J'ai un petit souciavec le terminal.Qu'est-ce qu'il me fait ?Il a pris.Oui, je crois qu'il a pris.Je vais tenter ça.C'est bon, je crois.
00:16:08 :Voilà.Je vais pouvoir le ramener.Vous voyez toujours bien pour vous ?Je vais le relancer.Voilà. Donc, il commence à préparerle café et le cookie.
00:16:24 :La préparation pour le cookie est terminée.Et hop, tout est servi.Et je remonte, vous voyez.Et hop.Ok, il a décidé de m'embêter aujourd'hui.
00:16:38 :Tu as un iPad qui displaît avecen même temps, là, ou pas ?Ouais. Non, il n'est pas couplénormalement, mais...Ça me le fait, moi, quand j'ai un iPad qui est coupléavec le Mac.
00:16:52 :J'ai des petites attentes, quoi, de temps en temps.On va voir si ça...Je vais éteindre carrément l'iPad, ça va réglerpeut-être la question.Hop.
00:17:02 :Voilà, alors.Voyons voir ça.Ouais.Je crois que mon paille de charme,il a décidé queaujourd'hui, il était mort.Voilà.Voilà, ça revient un peu.
00:17:22 :Voilà. Donc là,vous voyez, ce coup-ci,on a eu le retourde notre café et de notre cookie, contrairement àShredding.Ok ?Donc, un des avantagesde...
00:17:38 :d'Inkyo par rapport à Shredding,c'est que déjà, on peut partird'une fonction définiede base, et vous voyez qu'en rajoutantquelques mots-clés, finalement, on arriveà créer unesynchronisation de nos actionsau travers de nos différentes fonctions.
00:17:54 :En termesde temps, on est équivalent à ce qu'on varetrouver sur Shredding,mais une despremières différences que vous avez pu voir, c'estqu'avec Shredding, en fait, quand on veut récupérerles valeurs,nativement, ce n'est pas possible.
00:18:10 :Alors, il y a une possibilité,je vous l'ai préparée,mais quand vous allez voir un petit peuà quoi ça ressemble, la possibilité pour qu'on puisseeffectivement récupérerdes valeurs depuis les fonctionsqu'on passe dans Shredding,je pense que vous allez très très vitedevenir amoureux de la Synkyo
00:18:28 :quand vous comparez à Shredding.Je vous montre ça après,c'est un petit peu imbubable comme code.Après,tel qu'il est défini,à Synkyo, il va surtout être préférélorsque vous allez faire des actions avecdes requêtes internet, parce quele module à Synkyova beaucoup mieux gérer, en fin de compte,
00:18:50 :les entrées-sortieset les temps morts de processeursque va le gérer Shredding. Ce qui fait quelorsque vous travaillez, notamment dans le cadred'un projet Dango, je sais que ça va plaire à Gab,vous aurez des résultatsbeaucoup plusstables avec Asynkyoqu'avec Shredding, parce que par exemple,si dans Shredding, vous avez une de vos fonctions
00:19:10 :qui subit une interruption,Shredding va tout casser.Asynkyo,il va réussir à pouvoir gérers'il y a une des fonctions qui pose problème.Généralement,on va utiliser Asynkyo plutôt pourdes actions concurrentiellesavec des frameworks comme Djangoet Shredding, ce sera pluspour du code Python en duret de l'application
00:19:34 :sur PC.Est-ce que c'est toujours bon pour tout le monde ?Ah, j'ai oublié un détail, je suis en train de le voir devant les yeux.
00:19:42 :Mon freeze m'a oublié le détail.Pour lancer la commande,derrière,c'est Asynkyo.runC'est pour ça qu'on avait rajoutéce mot.Voilà.On avait rajouté le termeAsync devant la commande Asyncparce qu'en fait,contrairement aux autres,on ne peut pas lancer une commande Async directecomme ça, ça n'aurait pas pu faire
00:20:12 :simplement commande Asyncsans ça,ça n'aurait pas marché. Il faut lancerAsynkyo.runpour qu'il gère justementtoutes les fonctions de synchronisation d'Asynkyo.C'est bon pour tout le monde ?
00:20:26 :Je vais vous montrer comme promisle code qu'il va falloir sortirpour obtenir le mêmerésultat avec Shredding.Je vais faire un petit effort.De toute façon,je vous ai préparé un fichier, je vous remettrai tout.
00:20:52 :C'est pas vrai.Il a refusé.Attendez, je vais tenter ça.Voilà.On va y arriver.Alors.Pour réussirà obtenir une sortieavecle module Shredding,voilà ce qu'on va devoir faire.
00:21:42 :Je remonte.La première chose qu'il va falloir faire,il va falloirsurcharger la classe Shredpoury arriver. Les surcharges de classe,tout le monde a vu,tout le monde connaît un petit peu ça.
00:22:00 :Là, on va créerune classe qu'on va appeler Custom Shredet qui vahériter de la classe Shred. On va devoir surcharger.Les deux chosesqu'on va devoir créer,c'est un attribut Targetet un attribut Résult qu'on fixe à Noneau début.
00:22:22 :Pour avoir toutes les fonctions qui vontavec le Shred, il va falloir qu'on initieShred directementdans notreunit de notre classe personnalisée.Pour ceux qui connaissent un petit peu,on est obligéde bien préciser Shred. Si on
00:22:38 :utilise le terme Super,ça ne fonctionne pas.Ensuite,pour obtenir le retourde notre fonction,il faut qu'on surchargela méthode Runde la classe Shredpour que dans l'attributSelf Result, on puisseavoir le résultat de l'exécutionde Target qui, je le rappelle, est la fonctionqu'on passe dans le Shred.
00:23:04 :Ensuite, pour le reste de ce qu'onavait écrit avec Shred tout à l'heure, ça ne changerien. On reste toujours sur la mêmechose.La seule différence, c'est que pour obtenirforcément le résultat que vous voulez,il faut utiliser,pour chaque Shred, T1.Result
00:23:20 :et T2.Result.Je vais vous lancer le scriptpour que vous voyez ça.Il a décidéde continuer.Je pense qu'il faudra que je fassebeaucoup de réglages sur le PC pour la prochainefois.
00:23:36 :Voilà.Il s'est exécuté un peu vite, c'est pas grave.Je vaisremonter et vous allez voir ce que j'ai fait.Contrairement à tout à l'heure, on a bien le caféprêt et le cookie prêt.
00:23:54 :Est-ce que vous avezdes questions sur tout ça ?N'hésitez pas.Oui ?Faites-moisur la CMQ,genret'as dit qu'il fautAsyncQ.run et puis
00:24:24 :on appelle la méthodequi ale getter, c'est ça ?Alors,en fait, sur AsyncQ,je vais revenir un peu en arrière,voilà.En fait,pour que des méthodespuissent être prises en compte dans un groupede fonctionnement dans le cadred'AsyncQ,toutes les fonctions doivent avoirle mot-clé Async devant, d'accord ?
00:24:52 :Ensuite, dans ma fonctioncommande,comme on le faisaitavec les threadspour là où, avec les threads,tu faisais T1 start, T2 start,T1 join, T2 join,d'accord ?
00:25:10 :Là, c'est là que tu vas utiliserla méthode getterdu module AsyncQ, ok ?Dedans, tu vas y mettretes fonctions que tu as déjà définies avantpour lesquelles tu as précisé que c'était des fonctionsAsync, ok ?
00:25:24 :Ok.Et pour que tout ça puissefonctionner, il faut que cette fonction-làsoit aussi Async, d'accord ?Tu vas pouvoir lancer l'ensemblede ton architecture AsyncQ,donc tes fonctions que tu as définies, café, cookie,donc pour lancerta fonction commande qui lance tout ça,là, il faut que tu utilises la méthode run
00:25:46 :de AsyncQ.Et dedans, tu lui passes ta fonction commande Async.Tout à fait, c'est là que je voulais te demander.Disons que dans ton projet,tu ne fais qu'un seul getteret tu appelles toutes les fonctionsqui ont des méthodes Asyncou tu peux faire à chaque fois que tu veux
00:26:08 :une fonction commandequ'on appelle le getter.Alors, en fait, dans le getter,tu vas mettre toutes les fonctionsque tu veux qui marchent ensemble, d'accord ?
00:26:18 :Là, ce qu'on veut, nous,c'est que le café et le cookie soient préparésen même temps, d'accord ?Ah, d'accord, donc je peuxécrire...J'ai fait avoir plusieurs commandes,autant que je veux, en fait.
00:26:32 :Admettons, on aurait,par exemple,on va reprendre l'exemple que j'ai donné tout à l'heure,ça s'appellerait serviette, ok ?Et puis, un coup, le client, il te commandeun café avec un cookie,un coup, il commande un caféet il veut une serviette avec,il ne veut pas de cookie.
00:26:50 :Tu pourrais très bien imaginerque tu as une commande Asynccafé,par exemple,où tu prévois café et cookieet une deuxième commande Asynccafé et servietteoù tu aurais dans Gether que café et serviette.
00:27:08 :D'accord. Après, tu lances en fonctionde tes besoins, soit l'AsyncIOrun avec le commande Async caféou le commande Async café serviette.Ouais, je comprends maintenant, je comprends.
00:27:18 :D'accord. Merci.De rien.Est-ce qu'il y en a d'autres qui auraient des questions sur le sujet ?Et maintenant, en fait,disons quele Async,genre,le Gether, il lance le caféet le cookie en même temps.
00:27:42 :Oui.Maintenant, sij'ai un autre commande,une deuxième commande, par exemple, on a ditcafé, serviette.Par exemple, ce qu'on pourrait imaginer,je crois voir où tu veux en venir,ici, par exemple,on pourrait, mettons, on va dire,item 1et item 2.
00:28:08 :Ici, on passe, au lieu de passernos deux fonctions qu'on a là,on passe notre item 1làetpas trop vite,et notre item 2.
00:28:30 :D'accord ?Voilà. Et ici,en argument, tu passeston caféet ton cookie.Tu pourrais très bien passer, en fait,tes fonctionsque tu veux passer dans le Gethercomme des argumentsde ta commande Async.
00:28:54 :D'accord.Là, je t'ai fait avec item 1 et item 2,mais on pourrait imaginer, par exemple, avecdes args...Un paramètre, en fait.Voilà.En fait, là,café et cookie sont clairement des paramètrespour Async.io.
00:29:12 :Après que tu le passes en paramètrede ton Async.devCommand ou que tu le metsdirectement en dur dans le Gether,pour Python, c'est la même chosepuisque une fonction, ça reste un objet pour Python.
00:29:22 :C'est mieux de le mettre en argumentparce que là, tu n'as plus...Voilà, c'est moins clair.C'est moins clair ce que tu fais.Maintenant, typiquement,tu as créé un pool de 10 commandesAsync que tu peux utiliser en fonction.
00:29:36 :Tu peux créerun petit script qui va te permettre de choisirde dire, tiens, je veux un café, un cookieou un café et une serviette ou ainsi de suite.
00:29:44 :Et une fois que tu as fait sélectionner tes items,tu balances les fonctions qui vont biendans ton Async.io run command.Ouais, je comprends.Après, ça restede l'orienter aux objets. Donc, tu peux vraiment faire
00:29:56 :ce que tu veux puisque tout est objet.Du coup, tu vas pouvoir vraiment passer les objets que tu veux.D'accord.C'est bon, merci.De rien.
00:30:06 :Est-ce qu'il y a d'autres questions sur le sujet ?Je ne vais pas regarder le chat parce quequand on fait la présentation comme ça,on n'a pas de visu sur lechat.
00:30:20 :C'est bonpour tout le monde ?Alors, je verrai avec Gabpour vous remettresur le GitHub pourtous les petits codes que je vous ai présentésce soir.
00:30:42 :Et puis, si vous n'avez plus de questions,je pense qu'on va...Stéphane, une dernière question, en fait.Tu as tout à fait ditquele HMQ,c'est beaucoup pluspour les requêtes HTTP.
00:30:58 :Allô ?Oui, je t'entends, oui.C'est mieux de résoudre avec les requêtes HTTPau fait sur le réseau parce que des fois,disons que tu asune fonction qui appelleune API et l'API, c'est surle réseau.
00:31:16 :Et des fois, elle est bête sur le réseau.Et lui, il te permet de patienter,disons que tu faisun appel, à l'instant T,la connexion de cette API, et puis d'un coup, ça coupe.
00:31:26 :Et là, lui, il te permetde patienter, récupérer les donnéeset puis traiter de façoncomme tu veux.Et revenir, disons que si tu as 3 ou 4demandes, ça ne bloque pasle process.
00:31:40 :Voilà. Asyncio va pouvoirmieux gérer ces problématiquesde réseau, en fait.Ce que je disais tout à l'heure, dès qu'on va travaillersur du projet Django,si on a besoin de fairedes exécutions asynchrones,ça serabeaucoup plus simple avec Asyncio qu'avecShredding. Shredding,
00:32:00 :il a un peu plus de mal à trouverà gérerce genre de petites interruptions.Et maintenant,c'est conseillé d'utiliser pour le lecturede fichiers ?
00:32:12 :Pardon ?Si c'est bonde l'utiliser pour la lecturede fichiers ?Alors, pour la lecture de fichiersavecAsyncio, oui, effectivement.Attendez, j'avais faitbien de me le rappeler parce que j'avaisnoté un truc là-dessus.
00:32:32 :Euh...Parce que,justement...Oui, alors, pour Asyncio,justement, oui. Asyncio,par contre, oui, il vaut mieux l'éviter quand on ades écritures de fichiers. Parce
00:32:50 :qu'en fait, comme il va être capable de gérer des interruptionset des...et des...Chacun va vivre vraiment de son côté sans s'occuperde ce qui se passe pour les autres.
00:33:00 :Euh... Si vous faites des écrituressurtout sur un même fichierau travers de différentes fonctions dans Asyncio,là vous allez vous retrouver avec des problèmes delock. C'est-à-dire
00:33:10 :qu'il y a une de vos fonctions... Alors admettonsqu'on va reprendre notre exemple café-cookie.Admettons que café et cookie écriventdans le même fichier. Ben, si café
00:33:18 :est en train d'écrire dans le fichier, ben c'estlui qui est propriétaire du fichier à ce moment-là.Et quand cookie va vouloir écrire, ben il sera bloqué.
00:33:24 :Mais comme ils ne sont pas coordonnés les uns aux autres,comme ils ne sont pas coordonnés les uns par rapport aux autres,ben là du coup, vous risquezd'avoir un problème d'écriture avecles fichiers.
00:33:36 :Ok. Donc c'est bonpour la lecture, mais l'écriture...La lecture,globalement, ça ne devrait pas poser de problème,mais dès qu'il y a de l'écriture, ça va vite poser problème.
00:33:46 :D'accord.Parce que des fois, il y a des fichiers qui sont...Après un petit point que j'avais noté.Des trucs, ouais.Ok.Bon ben,si c'est bon pour tout le monde,je pense qu'on va arrêter là.
00:34:04 :Gab vous mettrale fichieravec tous les codes sur le Github.Et puis, ben...Désolé pour les petitssoucis techniques, et puisj'espère que ça vous a plu.
00:34:18 :C'était marrant les soucis techniques, t'inquiète, c'est normal.Ben oui.Faut que ça arrive, c'est la première.La première fois, moi, c'était bien pire.C'était les problèmes de connexion, vu carrément.
00:34:28 :Je crois que j'ai dû commencer un quart d'heure en retard.Ben puis là, à mon avis, je pense que la connexionn'est pas top, parce que je passe par mon portable,parce que je ne suis pas chez moi, donc du coup...
00:34:38 :Je pense que ça doit jouer aussi.Bon ben, bonne soiréeà tous, et puis à la prochaine alors.Ben merci beaucoup.Bonne soirée tout le monde.
00:34:50 :Moi, perso, je ferai un mentoratsamedi 14h du coup, je vais garderle même horaire, pour en avoir un le week-end,parce qu'il y a des gens qui ne peuvent pas venir la semaine des fois le soir.
00:34:58 :Doncsamedi 14h pour ceux qui sont là, sinon il y aura l'arrivée.On verra des trucs rigolos.D'accord.Bonne soirée Gab.Merci à tous.Bonne soirée, merci Stef'Man.
Aucune occurrence trouvée pour « ».