web-dev-qa-db-fra.com

Asyncio prend-il en charge les E / S asynchrones pour les opérations de fichiers?

Asyncio prend-il en charge les E/S asynchrones pour les opérations de fichiers? Si oui, comment puis-je l'utiliser dans Python 3.5 avec un code de syntaxe async/wait?

28
CthUlhUzzz

La plupart des systèmes d'exploitation ne prennent pas en charge les opérations de fichiers asynchrones. C'est pourquoi asyncio ne les prend pas en charge non plus.

Voir le wiki asyncio pour plus d'explications.

18
Andrew Svetlov

Cela dépend de la bibliothèque que vous utilisez.

curio offre cette fonctionnalité, https://curio.readthedocs.io/en/latest/reference.html#module-curio.file

plain asyncio ne le fait pas, mais il existe des bibliothèques tierces, par exemple https://github.com/Tinche/aiofiles (qui est vraiment un accès aux fichiers synchrone isolé dans les threads)

Les systèmes d'exploitation modernes fournissent des primitives de fichiers asynchrones, mais celles-ci sont variées, donc chacune aurait besoin d'une implémentation propre. Veuillez comparer:

Je soupçonne que quelqu'un va bientôt arracher io asynchrone sous-jacent de node.js et créer une bibliothèque Python décente, ou peut-être que quelqu'un a déjà.).

9
Dima Tisnek

asyncio ne prend pas en charge cela. Cependant, aiofiles ne supporte que cela. Jetez un coup d'oeil s'il vous plait.

7
Z. Qui