12. 12
Cythonとは
PythonとC/C++の静的型システムを融合したプ
ログラミング言語。
● Cythonのソースコードを入力に、効率的な
C拡張モジュールを生成 ※1
● Pythonのスーパーセットな言語。静的型情
報を与えるほど高速なコードを生成
● C/C++とPythonとのインターフェイスとして
も利用可能
In [1]: %load_ext cython
In [2]: def py_fibonacci(n):
...: a, b = 0.0, 1.0
...: for i in range(n):
...: a, b = a + b, a
...: return a
In [2]: %%cython
...: def cy_fibonacci(int n):
...: cdef int i
...: cdef double a = 0.0, b = 1.0
...: for i in range(n):
...: a, b = a + b, a
...: return a
In [4]: %timeit py_fibonacci(10)
582 ns ± 3.72 ns per loop (...)
In [5]: %timeit cy_fibonacci(10)
43.4 ns ± 0.14 ns per loop (...)
※1 手書きのCコードより高速になることも珍しくない。また移植性も高く、多く
のPythonバージョンやCコンパイラをサポートする。
45. 45
機械学習システムの開発の難しさ
“In an ML project, the team usually includes data scientists or ML researchers,
who focus on exploratory data analysis, model development, and
experimentation. These members might not be experienced software
engineers who can build production-class services.”
ー MLOps: Continuous delivery and automation... (cloud.google.com)
開発初期の頃、Flaskで実装したWebSocketサーバーが
特定の条件下で固まって動かなくなると相談を受ける。
結構ややこしく、わかりやすい資料もないためハマる人が多そうな問題。