• Page Fond menu
Accueil > Blog > Trio: A pythonic way to do async programming
< Retour

Trio: A pythonic way to do async programming

25 / 07 / 2018 | Expert
Trio: A pythonic way to do async programming

Trio: A pythonic way to do async programming

July 25, 2018 — Edinburgh, Scotland
co-located with the European Conference on Computer Systems (EuroSys)
Emmanuel Leblond, Scille, France - CTO chez Scille
 
Speaker(s) Emmanuel Leblond
 

LINKS

 

SUMMARY

Concurrent programs are super useful: think of web apps juggling lots of simultaneous downloads and websocket connections, chat bots tracking multiple concurrent conversations, or web spiders fetching pages in parallel. But writing concurrent programs is complicated, intimidating to newcomers, and often challenging even for experts.

Does it have to be? Python is famous for being simple and straightforward; can Python make concurrent programming simple and straightforward too? Trio is an attempt to address this question by the positive !

By taking advantage of new Python 3 features (async/await keywords, async loops and context managers etc.) while dropping legacy concepts that older asynchronous frameworks has to maintain, Trio defines a new set of primitives that make it dramatically easier to write correct concurrent programs.

In this talk, we will describe those primitives, and demonstrate how to use them to implement a basic algorithm for speeding up TCP connections. Compared to the best previous Python implementation, our version turns out to be easier to understand, more correct, and dramatically shorter.

 

RÉSUMÉ

Les programmes concurrents sont super utiles : pensez aux applications Web jonglant avec beaucoup de téléchargements simultanés et de connexions Websocket, les robots de discussion qui suivent plusieurs conversations simultanées ou les araignées Web qui extraient des pages en parallèle. Mais écrire des programmes concurrents est compliqué, intimidant pour les débutants, et souvent difficile même pour les experts.
Est-ce un passage obligé ? Python est célèbre pour sa simplicité et sa concision ; Python peut-il rendre la programmation simultanée simple et directe ? Trio tente d'aborder cette question positivement !
En exploitant les nouvelles fonctionnalités de Python 3 (async / await, Async Loops et les gestionnaires de contextes etc.) tout en supprimant les concepts hérités que les anciens frameworks asynchrones doivent conserver, Trio définit un nouvel ensemble de primitives qui simplifient considérablement l'écriture de programmes concurrents.
Dans cette présentation, nous allons décrire ces primitives et montrer comment les utiliser pour implémenter un algorithme de base pour accélérer les connexions TCP. Comparé à la meilleure implémentation précédente de Python, notre version s'avère plus facile à comprendre, plus correcte et plus courte.

 

 

Wednesday 25 July at 14:00 See schedule