Asyncio supporta l'I/O asincrono per le operazioni sui file? Se sì, come posso usarlo in Python 3.5 con codice di sintassi asincrono/attendi?Asyncio supporta l'I/O asincrono per le operazioni sui file?
risposta
La maggior parte dei sistemi operativi non supporta operazioni di file asincrone. Ecco perché asyncio
non li supporta neanche.
Vedere the asyncio wiki per ulteriori spiegazioni.
Lo è. Anche 'node.js' utilizza internamente il pool di thread per fornire l'API del file async –
Dipende dalla libreria utilizzata.
curio
offre questa funzionalità, https://curio.readthedocs.io/en/latest/reference.html#module-curio.file
pianura asyncio
non lo fa, ma ci sono 3rd librerie di parti, per esempio https://github.com/Tinche/aiofiles (che è realmente accesso ai file sincroni isolato nelle discussioni)
I moderni sistemi operativi forniscono primitive di file asincrone, ma queste sono diverse, quindi ciascuna avrebbe bisogno della propria implementazione. Confronti prego:
- http://man7.org/linux/man-pages/man7/aio.7.html
- https://msdn.microsoft.com/en-us/library/windows/desktop/aa365683(v=vs.85).aspx
- https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/TechniquesforReadingandWritingCustomFiles/TechniquesforReadingandWritingCustomFiles.html
Ho il sospetto che qualcuno sarà presto strappare sottostante IO asincrono da node.js
e fare una libreria Python decente, o forse qualcuno ha già.
Per quanto ne so, tutte le opzioni che avete menzionato utilizzano thread (curio, aiofile, implementazione di aio di glib e anche I/O sovrapposti di Windows utilizza una discussione piscina sotto il cofano). – jfs
asyncio non ha il supporto per questo. Tuttavia, aiofiles supporta proprio questo. Per favore guarda.
- 1. iOS supporta le operazioni sui file tramite SMB?
- 2. Jedis supporta le operazioni asincrone
- 3. operazioni sui file Python
- 4. È possibile tracciare le operazioni sui file con .NET?
- 5. PyPy funziona con asyncio?
- 6. Le operazioni del terminale sui flussi chiudono la sorgente?
- 7. Questo stream non supporta le operazioni di ricerca. HttpWebResponse
- 8. Modo corretto per arrestare le attività asyncio
- 9. Come gestite le operazioni dell'archivio asincrono con Flux?
- 10. Visual Studio supporta le operazioni di cache dei dati?
- 11. WebClient non supporta le operazioni di I/O simultanee
- 12. boost :: asio asincrono operazioni e risorse
- 13. Il DB Oracle supporta più operazioni (parallele) per connessione?
- 14. Come deridere le coroutine asyncio?
- 15. Operazioni binarie sui binari di Erlang?
- 16. Come verificare le operazioni di file system
- 17. Come tracciare le operazioni IO per file in Linux?
- 18. web server leggero asyncio
- 19. Rspec: come testare le operazioni di file e file contenuti
- 20. Asyncio Rende le richieste HTTP più lente?
- 21. Windows supporta i metadati per ogni file?
- 22. Operazioni sui file di test delle unità - dove mantenere la struttura delle directory di simulazione?
- 23. Download file asincrono SSH.Net
- 24. Perché ObservableCollection non supporta le modifiche collettive?
- 25. LinqDataSource non supporta la proprietà Select quando le operazioni Delete, Insert o Update sono abilitate
- 26. Perché BufferedStream.Write genera "Questo stream non supporta le operazioni di ricerca"?
- 27. LuaJIT supporta __gc per le tabelle?
- 28. Quali istruzioni supporta Linq per le entità?
- 29. PowerShell supporta le costanti?
- 30. Le operazioni rsync sono atomiche a livello di file?
Intendi come nei documenti e negli esempi? https://docs.python.org/3/library/asyncio-eventloop.html#watch-file-descriptors https://docs.python.org/3/library/asyncio-eventloop.html#watch-a-file -descriptor-per-read-events –
Voglio dire, ho bisogno di funzionalità di I/O di file non bloccanti. Ma in documenti ho trovato solo funzioni di monitoraggio dei descrittori. – CthUlhUzzz
Se vuoi solo IO non bloccanti dovresti essere in grado di usare i thread di python. Vuoi un IO asincrono o un IO non bloccante? http://stackoverflow.com/questions/319132/asynchronous-file-writing-possible-in-python potrebbe avere alcune informazioni utili. –