1

さて、MemoryError に関する StackOverflow に関する多くの質問をしましたが、満足のいく答えが見つかりませんでした。2GB RAMを搭載したラップトップでUbuntu 13.04 Gnome 64ビットを実行しています。次のPythonコードを書くと-

range(987654321/2) 

MemoryError をスローします。これは、ラップトップで使用可能な RAM が少ないことが原因である可能性があると思います。私の疑問は、それが-

  • Python の 32 ビット バージョンまたは 64 ビット バージョンを使用していますか?
  • 32 ビットまたは 64 ビットの Ubuntu?
  • Windows (ActivePython) で完全に実行するとどうなりますか?
4

3 に答える 3

3

Python2.x を使用している場合は、代わりに xrange を使用します。これはジェネレーターであり、メモリ内に範囲全体を作成するのではなく、代わりに必要に応じて各反復を作成します。

于 2013-10-09T05:01:48.417 に答える
1

Python に、約 5 億個の整数を含むリストを作成するように依頼しています。そのための十分なRAMがありません。十分な RAM があり、64 ビット マシンで 64 ビット Python を使用していれば、おそらく動作するでしょう。しかし、それでもやりたくないでしょう - 信じられないほど無駄です。

于 2013-10-09T04:58:00.067 に答える
0

これは、使用しようとする非常に広い範囲です-連続したメモリを探すため、マルチバイトごとに5億エントリ、ほとんどが少なくとも4バイトで、すべてに2 GBがあります-RAMが不足していると思います!

xrange(493827160)大きな範囲が必要な場合に使用します。

于 2013-10-09T05:01:41.277 に答える