2018年7月8日日曜日

Pythonでmemory_profilerを使うTips

インストール

conda install -c chroxvi memory_profiler

使い方

メモリ消費を見たい関数の上にデコレータ@profileを入れます。my_func()という関数を見たい場合、
@profile
def my_func():
    ....
とします。Jupyterではmemory_profilerは使えません。つまり


%mprun -f my_func my_func()

はエラーになります。

known bugで、対策はないようです。


正しいやり方: ターミナルで実行

pyrhont -m memory_profiler filename.py
と入力すればOKです。filename.pyの中に
from memory_profiler import profile
を入れてインポートすれば、
python filename.py
で同じことができます。

ファイルの中に日本語があって文字コードエラーが出る場合

utf-8 can't decode byte XXX in position XXX というエラーがでるとき。これはファイルが別のエンコードということです。
方法その①
無理やり変えるには、シェバンの次の行(2行め)で文字コードの宣言をします。
#!/usr/bin/env python
# -*- coding: cp932 -*-
# ・・・memory_profiler.pyの途中でもf.read()をしているのでそこでエラーが
# でるかもしれません。

方法その②
memory_profiler.pyを修正します。

920行目くらいで、
with open(filename, encoding='cp932') as f:
としてencodingを設定します。

0 件のコメント:

コメントを投稿