私はちょうど私が変更のためにファイルをポーリングしていたいくつかのpythonコードを書き直す予定でした。私はasyncio
のための練習としてそれを書き直したいと考えていました。概念的なアイデアは、ブロックされないファイルの読み取りを行うことでした。データが利用可能になると、イベントループはコルーチンの実行を継続します。どのようにソケットの読み取りとファイルの読み取りは異なるのですか?
次に、私は非同期ファイル操作が何かではないことを発見しました。 ref.
しかし、私はこの振る舞いの動機が何であり、どのようにソケットと違うのかは理解できませんでした。
ソケットの例:データの準備ができるまで、コルーチンからのソケット収量を読む
。 インターネット上の から非決定的な時間に実際に到着したことを意味します。
なぜ、ファイル読み込み用:データの準備ができるまで、コルーチンからのファイルの収量を読む
を。レディ それは実際にどこか コンピュータのハードディスク
からの非決定的な時間に到着した意味これは、呼び出しをブロックすると十分に機能レガシーコードから継承された行動ですか?
Character vs Blockファイルとは何か関係ありますか?
キャラクターデバイスファイルはどうですか?UART接続を表すファイルはどうですか?ファイルIOもここには適用されませんか?
パラレルにちょうどいくつかの考えは、ほとんどすべてのこれらの日のために良いではありません。メカニカルハードドライブでも、NCQを使用して16の要求を受け入れ、16のバッファがすべて異なるトラックにあっても、バッファ内の16トラック全体を保持することができる十分なバッファRAMを備えています。 –
私はいくつかの並列呼び出しはファイルに意味を理解します。それほど大したものではない。非同期プログラミングは、スレッドがあまりにも多くのメモリを消費しているところで、100k同時接続などでは本当に効果的です。あなたのハードディスクやssdでそれをしたくありません。メモリキャッシュされたファイルの場合、なぜ非同期アクセスを使用するのか、とにかくio waitはありません。 – Claude
それはディスクの読み取りをカバーしていますが、デバイスファイルについての考え方はありますか? – TheMeaningfulEngineer