つづき
(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行を最初に書くかどうかでエラーが出るとは思いもよらなかった。