バタイユゲーム支援ツール強化版の高速化案1(2/E)

つづき

(3)最終的な変更内容
 (A)JupyterLabでcythonを有効にする。
    下記の命令を初めに実行する。

 (B)1つの関数をcythonにする。
    文字データからコード値に変換する関数を対象にした。
    (一般隊形をコード値2に変換する場合などに使っている。)
    変更は下線部分を追記した。

 (C)pythonプログラムの一部変更
    上記関数の引数の型を宣言したので、呼ぶ側のpythonプログラムも変更が必要になる。
    下図のようにfrdata[4]が数値の場合は文字列に変更する処理を追加した。

(4)変更時に苦戦した事例
 (A)SyntaxError
    下図のエラーに苦戦して挫折しかけた。何が原因かWEBを探しても見当たらなかった。

    原因は”%%cythonをセルの1行目に書くことが必須”である。上記では#のコメントが1行目にあるので、
    cythonでなくpythonプログラムとしてコンパイルされる。
    下図のように%%cythonをセルの1行目に書くとエラーがなくなる。

 (B)TypeError
    下図のエラーにも苦戦した。

    初めは上記(A)のように引数の1番目を整数型にした。しかし、下図のように
    参照するデータは浮動小数点型か文字型であった。

    そこで、(3)のように引数を文字型にしてEXCELデータも下図のように
    文字型に変えたらエラーが解消された。

4.参考資料
  下記のWEBページにお世話になりました。ありがとうございます。
 ・Cython(サイソン)とは?Python+C言語で高速化しよう
 ・深入りしないCython入門
 ・ド素人がCythonによる高速化を試してみる 
 ・Pythonを簡単高速化!Cythonの実力とは?

<個人的な感想>
SyntaxErrorで多くの時間を無駄にした。
たった1行を最初に書くかどうかでエラーが出るとは思いもよらなかった。