« デイビッド・ビーズリーのユニットテストで魚が死んだ話。 | トップページ | ウィンドウズでOpenCV 3.1.0をopencv_contrib付きでPython用にビルド。 »

2016年1月 4日 (月)

ウィンドウズ版のPythonでメモリに困った場合の対処法

3230008811

のんびりしているエンジニアの日記の「Pythonで少なくメモリを使用する方法」に触発されてわたしも書いてみます。

私自身、仕事でPythonで画像処理とかよくするのですが、そうするとMemoryErrorをくらっちゃうことが多々あります。

基本的には「のんびりしているエンジニアの日記」にあるような対処をして、ピークメモリが減るようにリファクターとかしてしのいでますが、どうしてもピークメモリすらウィンドウズでPythonのインスタンスに割り当てられる限界の2GBを突破してしまい、OSが64ビットだろうが、PCに16GBのメモリをつんでいようが2GBに達した時点でMemoryErrorを食らいます。

Windows 7は64ビットだからといって安心してはいけません。ウィンドウズは32ビットのプログラムにメモリを出し渋る仕様なのです。がーーーん・・・。

これは64bitのPythonに移行するのがめんどいので、私の環境がいまだにpython.exeが32bitなためで、64ビットのPythonを使えば別にそれでOKです。

ただ、色々な事情で32ビットのPythonを使い続けている人もまだけっこういるとおもわれます。

そんな場合でも実はマイクロソフトから配布されているEDITBINというコマンドラインツールを使って、2GBの限界を突破して、おそらく32bitの限界の4GBまで?いけるようになります(Pythonのバグトラッカーをみると限界は3GBみたいですね)。

やり方

EDITBINは「Microsoft Visual C++ 2008 Express Edition」に付属するツールなのでまずこれをインストールします。

つぎに「C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin」にあるeditbin.exeを発見します。

つぎに以下のコマンドを実行します。普通のCMDでもいいですが、Microsoft Visual Studio Command Promptを使うとeditbin.exeにパスが通っているのでらくです。

editbin /LARGEADDRESSAWARE "C:\Python27\python.exe"

として、Pyhonのインタプリターの実行ファイルのフラグを書き換えます。

これだけで、ウィンドウズOSがPythonに割り当てるメモリが増えますので、2GBの壁を突破できるわけです。これはPythonに限らず一般的に使える方法ですので、Rubyとかゲームソフトとかにも応用できるとおもいます。

editbinのオプションはこちらのmsdnサイトを参考にしてください。

まあさっさと64bitに移行すればいいだけなんですけどねぇ。。サードパーティーライブラリーも十分対応済みなのでぜんぜん可能だと思うんですが、数年前からの遺産の蓄積があるので腰が重いです。

Linuxならこんなこと心配する必要ないですけどね。。

« デイビッド・ビーズリーのユニットテストで魚が死んだ話。 | トップページ | ウィンドウズでOpenCV 3.1.0をopencv_contrib付きでPython用にビルド。 »

Python」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1169291/63306800

この記事へのトラックバック一覧です: ウィンドウズ版のPythonでメモリに困った場合の対処法:

« デイビッド・ビーズリーのユニットテストで魚が死んだ話。 | トップページ | ウィンドウズでOpenCV 3.1.0をopencv_contrib付きでPython用にビルド。 »

広告欄


やっつけタイムライン

広告欄

はてブ

人目の訪問です。

  • follow us in feedly

    かなり更新が不定期なため、RSSリーダーをオススメします。現在Feedlyに122人登録頂いています。多謝!RSSを表示

    ブログランキング用 にほんブログ村 IT技術ブログ Pythonへ ブログランキングならblogram






    Jenny Mayhem
2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

IT技術注目記事

無料ブログはココログ