Size: 974
Comment:
|
Size: 998
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 8: | Line 8: |
=== Cythonのコードをひとつのファイルで完結させる === Cythonを使って高速化したはいいけど、元々ひとつのコードだったものが複数のファイルになってしまうのは嫌だ。という場合の小技。 |
=== Cythonのコンパイル->実行を一発でできるようにする === Cythonを使って高速化したはいいけど、毎回コンパイルするのは面倒だ。複数のコードになってしまうのは嫌だ。という場合の小技。 |
Line 11: | Line 11: |
コードのファイル名を cython_test.pyx とする。 最後に {{{#!python if __name__ == '__main__': import cython_test cython_test.main() |
home directoryに ''.cython.sh'' という名前で以下を書き込んだシェルスクリプトを作る。 {{{#!highlight sh #!/usr/bin/bash code=$1 cythonize -a -i $code > .cython_log.txt echo 'import '${code%.pyx} > .a.py echo ${code%.pyx}'.main()' >> .a.py python .a.py "${@:2}" |
Line 18: | Line 20: |
と書いておけば、コンパイルの時は読まれず、実行した時はmain関数が走る。このコードひとつをcythonizeしてからpythonに投げればおk | また、 ''~/.bashrc'' に次の一行を書き足す。 {{{#!highlight bash alias cythonsh='sh ~/.cython.sh' }}} これで ''~/.bashrc'' を有効にすれば、ターミナルで |
Line 20: | Line 26: |
$ cythonize -a -i cython_test.pyx Compiling /gpfs/home/(カレントディレクトリ)/cython_test.pyx because it changed. [1/1] Cythonizing /gpfs/(カレントディレクトリ)/cython_test.pyx $ python cython_test.pyx |
> cythonsh (cythonコード).pyx 引数 |
Line 25: | Line 28: |
と打つだけでコンパイルから実行まで行われる。 |
高速化の小技
Cython
Cythonのコンパイル->実行を一発でできるようにする
Cythonを使って高速化したはいいけど、毎回コンパイルするのは面倒だ。複数のコードになってしまうのは嫌だ。という場合の小技。
home directoryに .cython.sh という名前で以下を書き込んだシェルスクリプトを作る。
また、 ~/.bashrc に次の一行を書き足す。
1 alias cythonsh='sh ~/.cython.sh'
これで ~/.bashrc を有効にすれば、ターミナルで
> cythonsh (cythonコード).pyx 引数
と打つだけでコンパイルから実行まで行われる。