私はシミュレーションを構築する計画段階にあり、メモリと速度の考慮事項に基づいて、データを表現する方法についてのアイデアが必要です。
各時間ステップで、シミュレーション プロセスは 10^3 から 10^4 の新しいデータ レコードを作成し、新しいレコードまたは既存のレコード (10^6 から 10^8 のレコードがあります) を調べてから、削除または変更します。
各レコードには 3 ~ 10 個の単純なフィールドがあり、それぞれが整数または複数の ASCII 文字の文字列です。さらに、各レコードには 1 ~ 5 個の他のフィールドがあり、それぞれが整数を含む可変長リストです。一般的なレコードの重さは 100 ~ 500 バイトです。
変更または削除プロセスは次のように機能します。このレコードについて、引数がこのレコードのいくつかのフィールドの値であり、別のレコードのこれらのフィールドの値である関数を計算します。結果に応じて、プロセスは何らかの方法でそのフィールドを削除または変更する準備をします。
次に、他のレコードごとに繰り返します。次に、次のレコードに移動して繰り返します。すべてのレコードが処理されると、シミュレーションは次の時間ステップに移動する準備が整います。
次の時間ステップに移る直前に、すべての削除と変更を準備どおりに適用します。
許可されるレコードが多いほど、シミュレーションは向上します。すべてのレコードが RAM にある場合、マイナス面はシミュレーション サイズであり、おそらくプラス面は速度です。シミュレーションはリアルタイムである必要はありませんが、明らかに遅すぎたくありません。
メモリ内の各レコードを表すために、次のオプションを知っています。リストまたは辞書 (いくつかのリストがネストされています)、またはクラス インスタンスです。すべてのレコードを保存して別の日にシミュレーションを続行するには、慣れ親しんだ順に次のオプションがあります: 各行がレコードである csv ファイル、または単にすべてのレコードを RAM に入れ、それらをファイルに入れます (おそらくpickle)、またはある種のデータベースを使用します。
私は Python の基本とジェネレーターなどのいくつかの概念を学びましたが、データベースは学んでおらず、ピクルス化も試していません。明らかにもっと学ぶ必要があります。可能であれば、複数のコンピューターを使用するのは避けたいと思います。なぜなら、私は 1 台しか持っていないからです。同時実行は、あまりにも恐ろしく見えるからです。
メモリ内のレコードを表現する方法と、シミュレートされたシステムを保存する方法について、アドバイスはありますか?