大きなファイル(4GB以上)の処理性能を向上させる必要があります。このファイルを処理するために48個のハードウェアスレッドを実行できます。しかし、稼働中のサーバー上には、磁気ハードドライブもあります。 このファイルをRAMに読み込むことはできません。 そして、私の質問は、このマルチスレッドのファイルからの読み込みが可能かどうかです。スレッドはファイルから読み込み専用の行を終了するために別のスレッドで待機しなければならないため、ハードウェアレベルではこれが順次処理になりますが、コードレベルでは処理がマルチスレッドになります。磁気ハードドライブに格納されているマルチスレッド読み取りフォームファイル
-2
A
答えて
1
ファイルをRAMにロードできないと言うと、一度にファイル全体を意味しますか?あなたがまだそれをメモリに読み込んでいるディスクからそれを読み取るには、それを長い間メモリに保存していないかもしれません。
ファイルを読み込む最速の方法は、ファイルのシーケンシャルな読み取りのままで、複数のスレッドがディスクの頭を動かさないようにします。データの読み込みからデータの処理を切り離すことができれば、読み込みのチャンクを処理している他のスレッドに順番に渡しながら、データを読み取る単一のスレッドを持つことができます。
質問には言語が付けられていないため、より正確なテクニックを使用することは誰にも困難です。例えば、私は1人の作業者にファイルを順番に読み込み、読み込んだ行をチャンネルに配置し、チャンネルを処理するのに必要な数のワーカールーチンを作成します。
関連する問題
- 1. レジストリに格納されているGUID値を読み取る
- 2. char配列に格納されている値を読み取る方法は?
- 3. ハードドライブのオンディスク読み取りキャッシュ
- 4. ここにどこにrss読み取り/未読ステータスが格納されています
- 5. pythonマルチスレッドは、読み取り専用メモリバッファバイパスを読み取るGIL
- 6. 磁気サイト
- 7. 磁気デシレーション
- 8. 磁気イーサネットコネクタ
- 9. excelから値を読み取り、viewmodelタイプのリストコレクションに格納
- 10. ファイルからデータを読み取り、配列リストに格納
- 11. 辞書に格納されたAnyObjectを簡単に読み取る方法は?
- 12. インポートデータが100%磁気で処理されていません
- 13. ファイルに格納されたSerialisedオブジェクトは読み取れません。
- 14. オブジェクトまたはアレイへのオブジェクトの格納と読み取り
- 15. キャッシュにリソースファイル(.resx)を格納し、そこから読み取る
- 16. 入力ストリームバッファに格納されている文字数を読み取る方法
- 17. MySQLでvarbinaryとして格納されているIPv6アドレスを読み取る方法は?
- 18. マルチスレッド中に変数を読み取る
- 19. ファイルの読み込みと格納
- 20. excelファイルから値を読み取り、配列に格納する方法は?
- 21. drawableに格納されている画像のURIを取得
- 22. Python - 直接ハードドライブからの読み取り
- 23. ハードドライブにデータ構造を格納する方法
- 24. C#を使用してOracle DBにBLOBオブジェクトとして格納されたWord文書を読み取る
- 25. 読み取り/印刷ソケットouputをCINに待っている間(W/Oマルチスレッド)
- 26. ファイルに格納されたnxn行列の並列読み込み
- 27. Excelシートから複数の行を読み取ってデータベースに格納する
- 28. SQLIteからテーブルを読み取ってMicrosoft SQL Serverに格納する方法
- 29. Firebaseデータベースから値を読み取ってHTMLテーブルに格納する方法
- 30. 格納されているイベントオブジェクト
私の指導者によって指定された言語はPythonです。あなたは提案し、ファイルのチャンクをRAMにロードし、このチャンクを多くのスレッドで処理しますか? –
「データを処理する」という用語は、ここではあまりよく定義されていません。なぜなら、あなたが何をやっているのかわからないからですが、シーケンシャルリーダーをマルチスレッド処理から独立させて、データの並行処理も可能ですが、ファイル内の行の順序についてあまり心配する必要はありませんが、そうでない場合は順序を理解するためのロジックが必要になります。 – Andrew
私はこのファイルについてもっと詳しく説明します...このファイルの行は、TimeとMsgという2つのカテゴリに分割されています。プロセスのmsg行には前回の行についてのkonwledgeが必要です。ですから、最初に私は約48のチャンクでファイルを分割しなければなりません。そして、このチャンクを開始するには、タイムラインを見つけてください。これは、このファイルを処理するための最初のステップです。チャンク(長さが違う)を分割した場合、他のスレッドがこのファイルを処理(msgをデコードし、タイムスタンプを貼り付けて他のデータベースに貼り付ける)ことができます。 –