Comments on: En Python, les threads et l’asyncio s’utilisent ensemble http://sametmax.com/en-python-les-threads-et-lasyncio-sutilisent-ensemble/ Du code, du cul Mon, 28 Oct 2019 11:54:55 +0000 hourly 1 https://wordpress.org/?v=4.9.7 By: Sam http://sametmax.com/en-python-les-threads-et-lasyncio-sutilisent-ensemble/#comment-174248 Fri, 15 Jan 2016 14:08:41 +0000 http://sametmax.com/?p=17796#comment-174248 Merci.

]]>
By: SebCorbin http://sametmax.com/en-python-les-threads-et-lasyncio-sutilisent-ensemble/#comment-174239 Fri, 15 Jan 2016 09:55:34 +0000 http://sametmax.com/?p=17796#comment-174239 Petite coquille : “charge de travaille”, sinon cay kewl

]]>
By: Victor Stinner http://sametmax.com/en-python-les-threads-et-lasyncio-sutilisent-ensemble/#comment-174234 Fri, 15 Jan 2016 08:39:17 +0000 http://sametmax.com/?p=17796#comment-174234 Tout à fait. asyncio ne tire pas vraiment sa force du côté asynchrone. Mike Bayer (qui touche sa bille en base de données) a par exemple montré qu’une API asynchrone pour accéder à une base données est plut lente que l’API synchrone : http://techspot.zzzeek.org/2015/02/15/asynchronous-python-and-databases/

C’est contre intuitif pour les fanboys de l’asynchrone comme moi. Non, asyncio tire sa force de sa capacité à coupler plusieurs briques très différentes et offrir une API générique : réseau, threads, base de données, etc.

Au sujet des accès disque : bien qu’il existe des syscalls dans le noyau Linux, le code est plus lent que les accès bloquants. Le projet aiofiles permet d’accéder à un fichier sur le disque avec asyncio en lançant tous les accès disques dans des threads de manière transparent pour l’utiisateur. La PEP 492 (async/await) prend tout son sens ici : on peut écrire “async for line in file: …” qui va itérer sur les lignes d’un fichier texte de manière asynchrone !

Note : en mode debug, asyncio émet un avertissement si une tâche prend plus de 100 ms (délai configurable). Ca aide pour détecter quelles fonctions doivent être lancées dans des threads. https://docs.python.org/dev/library/asyncio-dev.html#debug-mode-of-asyncio

]]>
By: Sam http://sametmax.com/en-python-les-threads-et-lasyncio-sutilisent-ensemble/#comment-174139 Thu, 14 Jan 2016 13:37:22 +0000 http://sametmax.com/?p=17796#comment-174139 Yé soui un bouleto.

]]>
By: Gordon http://sametmax.com/en-python-les-threads-et-lasyncio-sutilisent-ensemble/#comment-174132 Thu, 14 Jan 2016 12:16:15 +0000 http://sametmax.com/?p=17796#comment-174132 Il reste un oubli : tu as laissé le paramètre executor dans la déclaration de main

]]>
By: Sam http://sametmax.com/en-python-les-threads-et-lasyncio-sutilisent-ensemble/#comment-174042 Wed, 13 Jan 2016 16:13:30 +0000 http://sametmax.com/?p=17796#comment-174042 En effet j’ai fais un mix bidon de deux codes : celui ou j’ai testé celui par défaut, et celui où j’ai testé un custo.

]]>
By: Geekingfrog http://sametmax.com/en-python-les-threads-et-lasyncio-sutilisent-ensemble/#comment-174034 Wed, 13 Jan 2016 14:09:39 +0000 http://sametmax.com/?p=17796#comment-174034 C’est l’import qui est en trop. run_in_executor utilise l’executor par défaut (un threadpoolexecutor) si aucun ne lui est fournit.

]]>
By: Gordon http://sametmax.com/en-python-les-threads-et-lasyncio-sutilisent-ensemble/#comment-174025 Wed, 13 Jan 2016 12:48:23 +0000 http://sametmax.com/?p=17796#comment-174025 Il manquerait pas un bout de ton snippet, genre la création du ThreadPoolExecutor et son passage à main(), l’import de aiohttp… ?

]]>