2016-10-26 5 views
3

Vor kurzem habe ich wollte Python async/warten auf lokale Datei IO verwenden, jedoch finde ich es nach dem Lesen folgenden Links unmöglich ist:Warum können Nodejs Datei-E/Async ausführen, während Python async nicht kann?

Does asyncio supports asynchronous I/O for file operations?

Read file line by line with asyncio

Die Lösung ist die aiofiles Module, die ist basierend auf Threads. Aber in Nodejs ist es so perfekt und einfach, File-IO-async nur mit fs-Modulen zu erstellen, die auf POSIX-Standardfunktionen basieren. Warum kann Python I/O Async nicht ausführen, wenn Nodejs kann?

+2

Knoten tun nicht notwendigerweise "asyncio" mehr als Python. Was Nodejs tut, ist eine FS/IO-API, die standardmäßig die Verwendung von * einem asynchronen Muster * über IO-Aufrufe unterstützt. – user2864740

+1

'asyncio' ist nicht für asynchrone Datei-E/A ausgelegt. Es gibt andere Bibliotheken, die das in Python machen. [aiofiles] (https://github.com/Tinche/aofiles) zum Beispiel, die asyncio mit fs-APIs erweitert. – tcooc

Antwort

-1

Verwendung wie diese Multithreading:

import threading 
t = threading.Thread(target=method, name='LoopThread') 
t.start() 
t.join() 
3

Aber Node.js Asynchron-Datei-I/O auch auf Themen basiert:

Beachten Sie, dass alle Dateisystem-APIs außer fs.FSWatcher() und diejenigen, die sind explizit synchrone Verwendung libuv's threapool, die überraschende und negative Auswirkungen auf die Leistung für einige Anwendungen haben, finden Sie in der UV_THREADPOOL_SIZE-Dokumentation für weitere Informationen .

- von https://nodejs.org/api/fs.html#fs_threadpool_usage

So Node.js fs API das Gleiche wie Python asyncio + aiofiles Modul tut.