1

文字列の部分文字列をリストに追加する関数があります。入力文字列が大きい場合

MemoryError exception

投げられます。1 次元リストの長さ制限はありますか? はいの場合、どのように拡張できますか?

4

4 に答える 4

3

はい。使用可能なメモリ。スワップを追加するか、RAM を追加するか、メモリ制限の大きいアーキテクチャに移行して、プロセスで使用できるメモリを増やします。

于 2013-08-09T11:24:14.690 に答える
2

メモリを増やす以外にも、いくつかのオプションがあります。

  1. アルゴリズムを変更して、メモリをあまり消費しないようにしてください。たとえば、これらすべての部分文字列を一度に必要としない場合は、ジェネレーター関数またはジェネレーター式を使用して、それらを連続して作成して使用できます。
  2. それらが必要な場合は、「大きな文字列」をメモリに保持し、buffer().
  3. 大きな文字列がファイルからのものである場合、mmap()このファイル (またはその一部) をアドレス空間に入れることができます。
于 2013-08-09T11:41:01.750 に答える
0

リストにデータを追加する代わりに、ファイルにデータを書き込むことができます。

于 2013-08-09T11:40:39.873 に答える
0

たまたま 32 ビット ビルドの Python を使用していませんか? 64 ビットのアドレス空間を使用する場合、十分なスワップ空間が利用可能であると仮定すると、理論的にアクセスできるすべてのメモリを使い果たすずっと前に、プロセスが停止するはずです。32 ビット プロセスでは、約 3 ギガバイトのメモリしかアクセスできません。今日の基準ではそれほどではありません。

于 2013-08-09T12:19:21.803 に答える