2016-01-09 6 views
9

asyncioはファイル操作のための非同期I/Oをサポートしていますか?はいの場合、これをPython 3.5でasync/syntax codeを待ってどのように使用できますか?asyncioはファイル操作のための非同期I/Oをサポートしていますか?

+1

ドキュメントや例のような意味ですか? 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-for-read-events –

+0

私は、非ブロックファイルI/O機能が必要であることを意味します。しかし、ドキュメントでは私はディスクリプタの監視機能しか見つかりませんでした。 – CthUlhUzzz

+0

ノンブロッキングIOだけを望むなら、Pythonのスレッドを使うことができます。非同期IOまたはノンブロッキングIOが必要ですか? http://stackoverflow.com/questions/319132/asynchronous-file-writing-possible-in-pythonには有用な情報がいくつかあります。 –

答えて

8

ほとんどのオペレーティングシステムは、非同期ファイル操作をサポートしていません。 だからこそ、asyncioはそれらをサポートしていません。

詳細については、the asyncio wikiを参照してください。

+0

です。 'node.js'でも非同期ファイルAPIを提供するために内部的にスレッドプールを使用しています –

4

これは、使用するライブラリによって異なります。

curioがこの機能を提供しています、例えば、https://curio.readthedocs.io/en/latest/reference.html#module-curio.file

平野asyncioはしませんが、サードパーティのライブラリがありますhttps://github.com/Tinche/aiofiles(実際にスレッドで分離された同期ファイルアクセス)

現代のオペレーティングシステムは非同期ファイルプリミティブを提供しますが、これらはさまざまなので、それぞれ独自の実装が必要です。比べてください:

私は誰かがすぐにnode.jsから非同期IOの基礎となるリッピングとまともなPythonライブラリを作る、またはおそらく誰かがすでに持っているだろうと思います。

+0

あなたが言及したすべてのオプションはスレッド(curio、aiofiles、glibのaio実装、そしてWindows Overlapped I/Oでもスレッドを使用しますフードの下にプール)。 – jfs

2

asyncioにはこれがサポートされていません。しかし、aiofilesはこれをサポートしています。見てください。

関連する問題