2016-01-09 9 views
9

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?

+1

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 –

+0

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

+0

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. –

risposta

8

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.

+0

Lo è. Anche 'node.js' utilizza internamente il pool di thread per fornire l'API del file async –

4

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:

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à.

+0

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

2

asyncio non ha il supporto per questo. Tuttavia, aiofiles supporta proprio questo. Per favore guarda.

Problemi correlati