| ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
|---|
micropython -- MicroPython の内部¶
MicroPython の内部にアクセスし、制御します。
- const(value) Any¶
値を定数として宣言することで、コードを効率化します。
さらにメモリ使用量を減らすために、その名前の前にアンダースコア(
_ORANGES)を付けます。こうすると、定数は同一ファイル内でのみ使えるようになります。他のモジュールから値をインポートしたい場合は、アンダースコアのない名前(
APPLES)を使います。この場合、もう少しメモリを消費します。
- heap_lock()¶
ヒープをロックします。ロックするとメモリの割り当てができなくなります。ヒープを割り当てようとすると
MemoryErrorが発生します。
- heap_unlock() int¶
ヒープをアンロックします。メモリ割り当てが再び許可されます。
heap_lock()が複数回呼ばれた場合、ヒープを再び利用可能にするにはheap_unlock()を同じ回数だけ呼び出す必要があります。- 戻り値:
ロック解除後のロックの深さ。ロックが解除されると
0になります。
- kbd_intr(chr)¶
入力ウィンドウに文字を入力したときに
KeyboardInterrupt例外を発生させる文字を設定します。デフォルトでは3が設定されており、これは Ctrl C を押したときに相当します。- パラメータ:
chr (int) -- KeyboardInterrupt を発生させる文字。この機能を無効にするには
-1を指定します。
- mem_info()¶
- mem_info(verbose) None
スタックとヒープのメモリ使用量に関する情報を表示します。
- パラメータ:
verbose -- 何らかの値が与えられた場合、ヒープ全体も表示されます。これは、どのブロックが使用され、どのブロックが解放されているかを示します。
- opt_level() int¶
- opt_level(level: int) None
ハブでコンパイルされるコードの最適化レベルを設定します:
アサーション文が有効になります。組み込みの
__debug__変数がTrueになっています。スクリプトの行番号が保存され、例外発生時に報告されるようになります。アサーションは無視され、
__debug__はFalseになります。スクリプトの行番号は保存されます。アサーションは無視され、
__debug__はFalseになります。スクリプトの行番号は保存されます。アサーションは無視され、
__debug__はFalseになります。スクリプトの行番号は保存されません。
通常のスクリプトはハブに送信される前にすでにコンパイルされているため、これはREPLで実行するコードにのみ適用されます。
- パラメータ:
level (int) -- 設定するレベル。
- 戻り値:
引数を指定しない場合は、現在の最適化レベルを返します。
- qstr_info()¶
- qstr_info(verbose) None
文字列がどの数だけ隔離化されているか、どれだけの RAM を消費しているかを表示します。
これにより、同じ文字列のコピーを重複して保存する必要がなくなります。
- パラメータ:
verbose -- 何らかの値を指定すると、RAM に隔離化したすべての文字列の名前も出力されます。
サンプルコード¶
定数を利用した効率化¶
from micropython import const
# この値はここで使えます。他のファイルでもインポートできます。
APPLES = const(123)
# これらの値は、このファイル内でのみ使えます。
_ORANGES = const(1 << 8)
_BANANAS = const(789 + _ORANGES)
# 定数は通常の値として読めます。コンパイラは、定数に代えて数値を
# 挿入するだけです。
fruit = APPLES + _ORANGES + _BANANAS
print(fruit)
RAM の空き容量のチェック¶
from micropython import mem_info
# メモリの利用状況の表示。
mem_info()
これは、以下に示すフォーマットで情報を表示します。この SPIKE プライム ラージハブの例では、コード内の変数に対して257696バイト(251KB)分のメモリが残っています。
stack: 372 out of 40184
GC: total: 258048, used: 352, free: 257696
No. of 1-blocks: 4, 2-blocks: 2, max blk sz: 8, max free sz: 16103
より多くのメモリ統計情報の取得¶
from micropython import const, opt_level, mem_info, qstr_info, stack_use
# スタート時のスタックを取得。
stack_start = stack_use()
# REPL コンパイラの最適化レベルの表示。
print("level", opt_level())
# メモリの使用状況を表示。
mem_info()
# メモリ使用状況とメモリマップを表示。
mem_info(True)
# 隔離化文字列の情報を表示。
qstr_info()
# 隔離化文字列の情報とその名前を表示。
APPLES = const(123)
_ORANGES = const(456)
qstr_info(True)
def test_stack():
return stack_use()
# スタックをチェック。
print("Stack diff: ", test_stack() - stack_start)