MicroPython

MicroPython 内部のアクセスと制御

関数

micropython.const(expr)

コンパイルが最適化できるように、式が定数であることを宣言するために使います。この関数の使い方は次のとおりです:

from micropython import const
CONST_X = const(123)
CONST_Y = const(2 * CONST_X + 1)

このように宣言された定数でも、宣言されているモジュールの外部からグローバル変数としてアクセス可能です。一方、定数名がアンダースコアで始まっていれば不可視となり、グローバル変数として利用でくなくなり、実行中のメモリを消費しません

micropython.opt_level([level])

level を指定した場合、この関数はスクリプトの後続のコンパイルの最適化レベルを設定して、 None を返します。指定しない場合は、現在の最適化レベルを返します。

最適化レベルは、次のコンパイル特性を制御します。

  • アサーション: レベル 0 では、アサーションステートメントが有効になり、バイトコードにコンパイルされます。レベル 1 以上ではアサーションがコンパイルされません。
  • ビルトイン __debug__ 変数: レベル 0 でこの変数が True に展開されます。レベル 1 以上では False で展開されます。
  • ソースコード行番号: レベル 0, 1, 2 では、ソースコードの行番号がバイトコードとともに格納され、例外が発生した行番号を例外として報告することができます。レベル 3 以上では行番号が格納されません。

デフォルトの最適化レベルは通常レベル 0 です。

micropython.mem_info([verbose])

現在使っているメモリに関する情報を表示します。 verbose を指定すると冗長モードとなり、詳しい情報を表示します。

micropython.qstr_info([verbose])

現在のところのインターンド文字列(内部に蓄えられている文字列)に関する情報を表示します。 verbose を指定すると冗長モードとなり、詳しい情報を表示します。

これは現在のインターンド文字列の数とそれが使っている RAM のサイズは含みます。冗長モードでは RAM 上のインターンド文字列すべての名前を表示します。

micropython.stack_use()

現在使われているスタックのサイズを表す整数を返します。この値そのものは特に有用ではなく、異なる時点でのスタック使用量の違いを計算するために使用されるべきです。

micropython.heap_lock()
micropython.heap_unlock()

ヒープをロックまたはロック解除します。ロックされているとメモリ割り当ては発生せず、ヒープを割り当てようとした場合は MemoryError が発生します。

micropython.kbd_intr(chr)

これらの関数はネストすることができます。つまり heap_lock() は連続して複数回呼び出すことができ、ロックの深さが増します。その後、ヒープを再度使用可能にするためには heap_unlock() を同じ回数呼び出す必要があります。

この関数は、通常は REPL で使っている文字の入力ストリームを他の目的で使う場合、そのストリームで Ctrl-C がキャプチャーされるのを防ぐために使えます。