SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
Cythonによる
拡張モジュール
開発	
2013/9/14 PyCon APAC 2013
Atsuo Ishimoto
自己紹介	
2
いしもと	
石本	
敦夫	
あつお	
p 書籍「パーフェクトPython」
著者の一員	
p http://www.gembook.org
p python.jp ドメインの管理者
p @atsuoishimoto
Pythonの拡張モジュール	
3
p 通常、C/C++で開発し、Pythonスクリプト
から利用できる関数・データ型を提供
p Pythonが動的にロードする共有ライブラリ
(*.so, *.pyd)
p 用途
l  Pythonからは呼び出せないCライブラリへ
のインターフェース
l  Pythonではパフォーマンス不足
拡張モジュールのめんどくささ	
4
C/C++が必要	
/* 一般的なC言語の例 */
int	
  i;main(){for(;i["]<i;++i){-­‐-­‐
i;}"];read('-­‐'-­‐'-­‐',i+++"hell	
  o,	
  
world!n",'/'/'/'));}read(j,i,p)
{write(j/p+p,i-­‐-­‐-­‐j,i/i);}	
  
	
  
The International Obfuscated C Code Contest 	
http://www.ioccc.org/1984/anonymous.c
拡張モジュールのめんどくささ	
5
関数・データ型定義がめんどう	
static PyMemberDef xx_memberlist[] = {
...
static PyGetSetDef xx_getsetlist[] = {
...
static PyTypeObject xx_Type = {
...
static PyMethodDef xx_methods[] = {
...
static PyModuleDef xx_module = {
...
PyMODINIT_FUNC
PyInit_xx(void)
{
...
拡張モジュールのめんどくささ	
6
参照カウント管理	
p Pythonのオブジェクトは、オブジェクトの被参照数
を正確にカウントする必要がある
p PyObject_SetItem()、PyList_SetItem()、
PyList_SET_ITEM()	
  の違いを覚えてますか?
p 間違えればメモリリークかコアダンプ
Cythonとは	
7
Python専用プログラミング言語	
p Pythonの拡張モジュールを開発するため
の専用プログラミング言語
p Pythonのほぼ上位互換
p インタープリタではなくコンパイラ
p Python2/3対応
p http://www.cython.org
Cythonの起源	
8
Pyrex 	
Cython	
Fork	
最終リリースは
2010/4/12	
2002/4/3
version 0.1 リリース
Cythonを採用したプロジェクト	
9
p lxml
http://lxml.de/
p Sage
http://www.sagemath.org/
p SciPy
http://www.scipy.org/
p PyYAML
https://bitbucket.org/xi/pyyaml
Pythonの構文で
C言語と同じ処理を書ける	
10
/*	
  C言語 */	
  
	
  
void	
  spam()	
  {	
  
	
  	
  void	
  *p	
  =	
  malloc(100);	
  
	
  	
  if	
  (!p)	
  {	
  
	
  	
  	
  	
  return;	
  
	
  	
  }	
  
	
  	
  if	
  (!ham())	
  {	
  
	
  	
  	
  	
  goto	
  exit;	
  
	
  	
  }	
  
	
  	
  egg();	
  
exit:	
  
	
  	
  free(p);	
  
}	
  
#	
  Cython	
  
	
  
def	
  spam():	
  
	
  	
  cdef	
  void	
  *p	
  =	
  malloc(100)	
  
	
  	
  if	
  p:	
  
	
  	
  	
  	
  	
  	
  try:	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  if	
  not	
  ham():	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  egg()	
  
	
  	
  	
  	
  	
  	
  finally:	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  free(p)	
  
Cythonの文法	
11
基本は
Python2 とほぼ同じ!	
def	
  qsort(L):	
  
	
   if	
  len(L)	
  <=	
  1:	
  
	
   return	
  L	
  	
  
	
   return	
  (	
  
	
  	
  	
  	
  	
  	
  	
  	
  qsort([lt	
  for	
  lt	
  in	
  L[1:]	
  if	
  lt	
  <	
  L[0]])	
  	
  
	
   +	
  [L[0]]	
  	
  
	
   +	
  qsort(	
  
	
   [ge	
  for	
  ge	
  in	
  L[1:]	
  if	
  ge	
  >=	
  L[0]]))	
http://code.activestate.com/recipes/66473-just-for-fun-quicksort-in-3-lines/
Cythonの関数・型定義	
12
かんたん	
cdef	
  class	
  Spam:	
  
	
  	
  	
  	
  cdef	
  double	
  attr1	
  
	
  	
  	
  	
  cdef	
  public	
  double	
  public_attr	
  
	
  	
  	
  	
  cdef	
  readonly	
  double	
  public_attr2	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  def	
  ham(self):	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  self.attr1	
  
アーリーバインディング	
13
変数の型宣言
も
できる!	
def	
  spam(dict	
  d):	
  
	
  	
  	
  	
  return	
  len(d)	
  
型チェックは静
的・動的両方	
def	
  spam(dict	
  d):	
  
	
  	
  cdef	
  list	
  L	
  	
  
	
   L	
  =	
  d	
  
	
   #	
  コンパイルエラーに	
  
	
   #	
  ならない	
  
Cythonコードの最適化	
14
cdef	
  int	
  i	
  
for	
  i	
  in	
  range(100):	
  
	
  	
  	
  	
  …	
  
cdef	
  int	
  i	
  =	
  0	
  
while	
  i	
  <	
  100:	
  
	
  	
  	
  	
  …	
  
	
  	
  	
  	
  i	
  +=	
  1	
  
オブジェクトアクセスの最適化	
15
Cythonコード	
 生成されるCコード	
型宣言なし	
 item = obj[n]	
  
item = PyObject_GetItem(
obj, n)
	
  
型宣言あり	
cdef tuple obj
cdef int n
item = obj[n]	
  
item = PyTuple_GET_ITEM(
obj, n)	
  
C/C++ライブラリの利用	
16
#	
  Python.h の PyMem_Malloc() を宣言	
  
cdef	
  extern	
  from	
  "Python.h"	
  
	
  	
  	
  	
  void*	
  PyMem_Malloc(size_t	
  n)	
  
	
  
def	
  spam():	
  
	
  	
  	
  	
  cdef	
  void	
  *p	
  
	
  	
  	
  	
  p	
  =	
  PyMem_Malloc(100)	
  
	
  	
  	
  	
  if	
  not	
  p:	
  
	
  	
  	
  	
  	
  	
  	
  	
  raise	
  MemoryError()	
  
ヘッダファイルから関数や構造体をインクルード
定義済みライブラリ	
17
標準Cランタイム関数な
どは定義済み	
from	
  libc.math	
  cimport	
  sin	
  
	
  	
  
def	
  std_sin(x):	
  
	
  	
  	
  	
  return	
  sin(x*x)	
  
p 関数・構造体・定数など
をCythonで定義してあ
る
p cimport文でインポート
するだけで利用可能
定義済みライブラリ(抜粋)	
18
種類	
 モジュール名	
Python API	
 cpython.object	
 PyObject_XXXの定義	
python.dict	
 PyDict_XXXの定義	
…	
C標準ライブラリ	
 libc.stdio	
 stdio.hで定義された関数	
libc.stdlib	
 stdlib.hで定義された関数	
…	
C++標準ライブラリ	
 libcpp.list	
 std::listの定義	
libcpp.string	
 std::string の定義	
…	
numpy	
 numpy	
 numpy API の定義	
OpenMP	
 openmp	
 OpenMP API の定義	
Posix標準ライブラリ	
 posix.fcntl	
 fcntl.hで定義された関数	
…
C/C++のデータ型	
19
cdef キーワードで
変数宣言	
def	
  spam():	
  
	
  	
  	
  	
  cdef	
  double	
  value	
  
	
  	
  	
  	
  value	
  =	
  100.0	
  *	
  200	
  
	
  	
  	
  	
  return	
  value	
  
ポインタや配列も	
def	
  spam(s):	
  
	
  	
  	
  	
  cdef	
  char	
  p,*q	
  
	
  	
  	
  	
  p	
  =	
  s[0]	
  
	
  	
  	
  	
  q	
  =	
  &p	
  
	
  	
  	
  	
  return	
  q[0]	
  	
  	
  #	
  *qは不可	
  
自動型変換	
20
def	
  spam(n):	
  
	
  	
  	
  	
  cdef	
  int	
  number	
  
	
  	
  	
  	
  number	
  =	
  n	
  	
  
p Pythonオブジェクトを、C
のint型の値に変換
p 変換不能な場合は例外を
送出	
int	
  number	
  =	
  PyInt_AS_LONG(n)	
  
文字列の自動変換	
21
def	
  spam(L):	
  
	
  	
  	
  	
  cdef	
  char	
  *s	
  =	
  "ham"	
  
	
  	
  	
  	
  L.append(s)	
  
p 文字列 s を Pythonのstrオブジェクト
(Python3ではbytes)に変換
p strオブジェクト -> char * も変換される
GIL制御	
22
言語としてGILを
サポート	
p GIL: Global Interpreter Lock
p Pythonスクリプトが、複数のス
レッドで同時に実行されないよう
に制御する仕組み
p PythonのC APIを使わない処理
の間は、GILを開放すると並列
処理の効率が向上するケースも
with	
  nogil:	
  
	
  	
  	
  #GILを開放し、他のスレッド	
  
	
  	
  	
  #でPython実行を許可する	
 	
	
  	
  	
  f	
  =	
  fopen(fname,"w")	
  
	
  	
  	
  …	
  
C++サポート	
23
from	
  collections	
  import	
  defaultdict	
  
	
  	
  
def	
  freq(values):	
  
	
  	
  	
  	
  #	
  要素に、同じ値が何個あるか	
  
	
  	
  	
  	
  #	
  数え上げる	
  
	
  
	
   d	
  =	
  defaultdict(int)	
  
	
   for	
  v	
  in	
  values:	
  
	
   d[v]	
  +=	
  1	
  
#	
  distutils:	
  language	
  =	
  c++	
  
	
  
from	
  libcpp.map	
  cimport	
  map	
  
	
  	
  
def	
  freq(list	
  values):	
  
	
  	
  	
  	
  #	
  std::map を使用	
  
	
  	
  	
  	
  cdef	
  map[int,	
  int]	
  d	
  	
  
	
  	
  	
  	
  cdef	
  int	
  v	
  
	
  	
  
	
  	
  	
  	
  for	
  v	
  in	
  values:	
  
	
  	
  	
  	
  	
  	
  	
  	
  d[v]	
  +=	
  1	
  
Distutils:で、C++
ファイルの生成を指示
Cythonのビルド	
24
Cythonソースファイル
(*.pyx *.pyd *.pxi)
cythonコマンド	
Cソースファイル
(*.c *.cpp)
Cコンパイラ・リンカ
Python拡張モジュール
(*.so *.pyd)
Distutilsでビルド	
25
from	
  distutils.core	
  import	
  setup	
  
from	
  Cython.Build	
  import	
  cythonize	
  
	
  	
  
setup(	
  
	
  	
  name	
  =	
  "hello",	
  
	
  	
  ext_modules	
  =	
  cythonize(	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'hello.pyx'))	
  
通常の拡張モジュー
ルと同じく、setup.py
を作成	
setup.pyで
ビルド・インストール	
$	
  python	
  setup.py	
  build_ext	
  
$	
  python	
  setup.py	
  install	
  
対話コンソールでビルド	
26
pyximport.install()
で、pyxファイルを自
動的にビルドしてイ
ンポート	
#	
  hello.pyxをコンパイルし、	
  
#	
  拡張モジュールをインポートする	
  
>>>	
  import	
  pyximport	
  
>>>	
  pyximport.install()	
  
(None,pyximport.	
  …)	
  
>>>	
  import	
  hello	
  
	
  	
  
(コンパイル・リンクオプションを指定する場合には使えない)
CythonはPythonより速い?	
27
Pythonはインタープリ
タだから遅い	
Cythonはコンパイル
して実行するから速い
ベンチマーク	
28
def	
  newton(n):	
  
	
  	
  guess	
  =	
  n/2	
  
	
  	
  better	
  =	
  (guess	
  +	
  n/guess)/2	
  
	
  	
  while	
  better	
  !=	
  guess:	
  
	
  	
  	
  	
  guess	
  =	
  better	
  
	
  	
  	
  	
  better	
  =	
  (guess	
  +	
  n/guess)/2	
  
	
  	
  return	
  guess	
  
パフォーマンス比較	
29
$ python -m timeit -c 'import pyx_newton;pyx_newton.newton(10.**100)'
10000 loops, best of 3: 21.7 usecper loop
$ python -m timeit -c 'import py_newton;py_newton.newton(10.**100)'
10000 loops, best of 3: 36.3 usec per loop	
Python版	
Cython版	
(Python3.3.1/Cython 0.19.1)
Cython化だけでは速くならない	
30
Pythonインタープ
リタは優秀	
p  バイトコードインタープリタ
のオーバヘッドは確かにあ
るが…	
Pythonオブジェク
トの、動的な比較・
演算APIが問題	
p  PyNumber_TrueDivide、
PyObject_RichCompare
など
p  CythonもPythonも、同じ
APIを使って演算を行うの
で、大きな差は出ない
Cのデータ型で演算を行う	
31
def	
  newton(double	
  n):	
  
	
  	
  cdef	
  double	
  guess,	
  better	
  
	
  
	
  	
  guess	
  =	
  n/2	
  
	
  	
  better	
  =	
  (guess	
  +	
  n/guess)/2	
  
	
  	
  while	
  better	
  !=	
  guess:	
  
	
  	
  	
  	
  guess	
  =	
  better	
  
	
  	
  	
  	
  better	
  =	
  (guess	
  +	
  n/guess)/2	
  
	
  	
  return	
  guess	
  
32
21.7 usec	
36.3 usec	
Python版	
Cython版	
Cython(型指定)版	
100000 loops, best of 3: 2.89 usec per loop	
•  Cython版では、0除算でZeroDivisionError例外を送出するなどの処
理があるため、Pure C版より若干遅い
関数の呼び出しコスト	
33
def	
  tak(x,	
  y,	
  z):	
  
	
  	
  	
  	
  if	
  x	
  <=	
  y:	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  z	
  
	
  	
  	
  	
  return	
  tak(	
  
	
   tak(x-­‐1,	
  y,	
  z),	
  	
  
	
   tak(y-­‐1,	
  z,	
  x),	
  	
  
	
   tak(z-­‐1,	
  x,	
  y))	
  
34
Python版	
$ python -m timeit -s "import tak" "tak.tak(18, 9, 0)"
10 loops, best of 3: 2.74 sec per loop
Cython版	
$ python -m timeit -s "import tak" "tak.tak(18, 9, 0)"
10 loops, best of 3: 1.47 sec per loop
処理時間はほとんど関数呼び出し	
35
Pythonの関数オブ
ジェクトは重たい	
p 引数の動的な受け渡し
p フレームオブジェクトの作成
Cの関数を定義	
36
cdef	
  int	
  c_tak(int	
  x,	
  int	
  y,	
  int	
  z):	
  
	
  	
  	
  	
  if	
  x	
  <=	
  y:	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  z	
  
	
  	
  	
  	
  return	
  c_tak(	
  
	
   c_tak(x-­‐1,	
  y,	
  z),	
  	
  
	
   c_tak(y-­‐1,	
  z,	
  x),	
  	
  
	
   c_tak(z-­‐1,	
  x,	
  y))	
  
	
  
def	
  tak(x,	
  y,	
  z):	
  
	
  	
  	
  	
  return	
  c_tak(x,	
  y,	
  z)	
  
37
Python版	
$ python -m timeit -s "import tak" "tak.tak(18, 9, 0)"
10 loops, best of 3: 2.74 sec per loop
Cython版	
$ python -m timeit -s "import tak" "tak.tak(18, 9, 0)"
10 loops, best of 3: 1.47 sec per loop
Cython(cdef)版	
$ python -m timeit -s "import tak" "tak.tak(18, 9, 0)"
10 loops, best of 3: 36.9 msec per loop
C言語の関数	
38
できるだけC/C++の
関数を呼び出す	
p 呼び出しコスト:低
p インライン化も可能
p Pythonからは呼び出せない
ご清聴ありがとうございました	
39

Contenu connexe

Tendances

数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
幾何と機械学習: A Short Intro
幾何と機械学習: A Short Intro幾何と機械学習: A Short Intro
幾何と機械学習: A Short IntroIchigaku Takigawa
 
【DL輪読会】論文解説:Offline Reinforcement Learning as One Big Sequence Modeling Problem
【DL輪読会】論文解説:Offline Reinforcement Learning as One Big Sequence Modeling Problem【DL輪読会】論文解説:Offline Reinforcement Learning as One Big Sequence Modeling Problem
【DL輪読会】論文解説:Offline Reinforcement Learning as One Big Sequence Modeling ProblemDeep Learning JP
 
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層智啓 出川
 
機械学習で嘘をつく話
機械学習で嘘をつく話機械学習で嘘をつく話
機械学習で嘘をつく話Satoshi Hara
 
backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門Takuji Tahara
 
Automatic Mixed Precision の紹介
Automatic Mixed Precision の紹介Automatic Mixed Precision の紹介
Automatic Mixed Precision の紹介Kuninobu SaSaki
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Yusuke Fujimoto
 
3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向Kensho Hara
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Yusuke Uchida
 
大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック
大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック 大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック
大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック 西岡 賢一郎
 
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic DatasetsDeep Learning JP
 
モデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留するモデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留するTakahiro Kubo
 
スパースモデリング入門
スパースモデリング入門スパースモデリング入門
スパースモデリング入門Hideo Terada
 
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII
 
TensorFlow XLAは、 中で何をやっているのか?
TensorFlow XLAは、 中で何をやっているのか?TensorFlow XLAは、 中で何をやっているのか?
TensorFlow XLAは、 中で何をやっているのか?Mr. Vengineer
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.kiki utagawa
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...Deep Learning JP
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門joisino
 

Tendances (20)

数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
 
幾何と機械学習: A Short Intro
幾何と機械学習: A Short Intro幾何と機械学習: A Short Intro
幾何と機械学習: A Short Intro
 
【DL輪読会】論文解説:Offline Reinforcement Learning as One Big Sequence Modeling Problem
【DL輪読会】論文解説:Offline Reinforcement Learning as One Big Sequence Modeling Problem【DL輪読会】論文解説:Offline Reinforcement Learning as One Big Sequence Modeling Problem
【DL輪読会】論文解説:Offline Reinforcement Learning as One Big Sequence Modeling Problem
 
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
 
機械学習で嘘をつく話
機械学習で嘘をつく話機械学習で嘘をつく話
機械学習で嘘をつく話
 
backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門
 
Automatic Mixed Precision の紹介
Automatic Mixed Precision の紹介Automatic Mixed Precision の紹介
Automatic Mixed Precision の紹介
 
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
 
3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
 
大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック
大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック 大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック
大域的探索から局所的探索へデータ拡張 (Data Augmentation)を用いた学習の探索テクニック
 
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
 
モデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留するモデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留する
 
スパースモデリング入門
スパースモデリング入門スパースモデリング入門
スパースモデリング入門
 
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
 
TensorFlow XLAは、 中で何をやっているのか?
TensorFlow XLAは、 中で何をやっているのか?TensorFlow XLAは、 中で何をやっているのか?
TensorFlow XLAは、 中で何をやっているのか?
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 

En vedette

なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?Aki Ariga
 
Cython ことはじめ
Cython ことはじめCython ことはじめ
Cython ことはじめgion_XY
 
白い陽気なやつとPythonでたわむれる
白い陽気なやつとPythonでたわむれる白い陽気なやつとPythonでたわむれる
白い陽気なやつとPythonでたわむれるKen'ichi Matsui
 
SIerからWebエンジニアへの失敗しない転職方法
SIerからWebエンジニアへの失敗しない転職方法SIerからWebエンジニアへの失敗しない転職方法
SIerからWebエンジニアへの失敗しない転職方法Yusuke Kon
 
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開Seiya Tokui
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Etsuji Nakai
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data scienceTakami Sato
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたYusuke Kon
 
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShellAmazon Web Services Japan
 
Pythonによる機械学習の最前線
Pythonによる機械学習の最前線Pythonによる機械学習の最前線
Pythonによる機械学習の最前線Kimikazu Kato
 
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京Koichi Hamada
 

En vedette (14)

なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
 
Cython ことはじめ
Cython ことはじめCython ことはじめ
Cython ことはじめ
 
Random Forests
Random ForestsRandom Forests
Random Forests
 
白い陽気なやつとPythonでたわむれる
白い陽気なやつとPythonでたわむれる白い陽気なやつとPythonでたわむれる
白い陽気なやつとPythonでたわむれる
 
NumPy闇入門
NumPy闇入門NumPy闇入門
NumPy闇入門
 
SIerからWebエンジニアへの失敗しない転職方法
SIerからWebエンジニアへの失敗しない転職方法SIerからWebエンジニアへの失敗しない転職方法
SIerからWebエンジニアへの失敗しない転職方法
 
CuPy解説
CuPy解説CuPy解説
CuPy解説
 
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
 
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
 
Pythonによる機械学習の最前線
Pythonによる機械学習の最前線Pythonによる機械学習の最前線
Pythonによる機械学習の最前線
 
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
 

Similaire à Introduction to cython

Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cythonfuzzysphere
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelereaseShiqiao Du
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携Tomoaki Shimizu
 
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputingNoboru Irieda
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門伸男 伊藤
 
cocos2d-x公開講座 in 鹿児島
cocos2d-x公開講座 in 鹿児島cocos2d-x公開講座 in 鹿児島
cocos2d-x公開講座 in 鹿児島Tomoaki Shimizu
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto studyNaoya Inada
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すAromaBlack
 
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23Masashi Shibata
 
Cocos2d xをさらにさわってみよう!
Cocos2d xをさらにさわってみよう!Cocos2d xをさらにさわってみよう!
Cocos2d xをさらにさわってみよう!Tomoaki Shimizu
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12Takanori Suzuki
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2Tomohiro Namba
 
Sohu邮箱的python经验
Sohu邮箱的python经验Sohu邮箱的python经验
Sohu邮箱的python经验Ryan Poy
 

Similaire à Introduction to cython (20)

Wrapping a C++ library with Cython
Wrapping a C++ library with CythonWrapping a C++ library with Cython
Wrapping a C++ library with Cython
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelerease
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
 
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
 
cocos2d-x公開講座 in 鹿児島
cocos2d-x公開講座 in 鹿児島cocos2d-x公開講座 in 鹿児島
cocos2d-x公開講座 in 鹿児島
 
PCL
PCLPCL
PCL
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto study
 
Boost Tour 1.50.0 All
Boost Tour 1.50.0 AllBoost Tour 1.50.0 All
Boost Tour 1.50.0 All
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
 
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
 
Cocos2d xをさらにさわってみよう!
Cocos2d xをさらにさわってみよう!Cocos2d xをさらにさわってみよう!
Cocos2d xをさらにさわってみよう!
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
Boost tour 1_40_0
Boost tour 1_40_0Boost tour 1_40_0
Boost tour 1_40_0
 
C++14 Overview
C++14 OverviewC++14 Overview
C++14 Overview
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
 
Sohu邮箱的python经验
Sohu邮箱的python经验Sohu邮箱的python经验
Sohu邮箱的python经验
 
Boost Tour 1_58_0 merge
Boost Tour 1_58_0 mergeBoost Tour 1_58_0 merge
Boost Tour 1_58_0 merge
 

Plus de Atsuo Ishimoto

NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】
NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】
NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】Atsuo Ishimoto
 
行列演算とPythonの言語デザイン
行列演算とPythonの言語デザイン行列演算とPythonの言語デザイン
行列演算とPythonの言語デザインAtsuo Ishimoto
 
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Atsuo Ishimoto
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティAtsuo Ishimoto
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Atsuo Ishimoto
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールAtsuo Ishimoto
 
Python3と向かい合ってみる
Python3と向かい合ってみるPython3と向かい合ってみる
Python3と向かい合ってみるAtsuo Ishimoto
 
Pythonのシグナル処理
Pythonのシグナル処理Pythonのシグナル処理
Pythonのシグナル処理Atsuo Ishimoto
 
Pythonのガベージコレクション
PythonのガベージコレクションPythonのガベージコレクション
PythonのガベージコレクションAtsuo Ishimoto
 
Slide at PyCon mini JP on 2011/1/29
Slide at PyCon mini JP on 2011/1/29Slide at PyCon mini JP on 2011/1/29
Slide at PyCon mini JP on 2011/1/29Atsuo Ishimoto
 
String representation in py3k
String representation in py3kString representation in py3k
String representation in py3kAtsuo Ishimoto
 

Plus de Atsuo Ishimoto (14)

Pythonの紹介
Pythonの紹介Pythonの紹介
Pythonの紹介
 
NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】
NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】
NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】
 
行列演算とPythonの言語デザイン
行列演算とPythonの言語デザイン行列演算とPythonの言語デザイン
行列演算とPythonの言語デザイン
 
Django pgroonga
Django pgroongaDjango pgroonga
Django pgroonga
 
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
 
python.jpの使い方
python.jpの使い方python.jpの使い方
python.jpの使い方
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
 
Python3と向かい合ってみる
Python3と向かい合ってみるPython3と向かい合ってみる
Python3と向かい合ってみる
 
Pythonのシグナル処理
Pythonのシグナル処理Pythonのシグナル処理
Pythonのシグナル処理
 
Pythonのガベージコレクション
PythonのガベージコレクションPythonのガベージコレクション
Pythonのガベージコレクション
 
Slide at PyCon mini JP on 2011/1/29
Slide at PyCon mini JP on 2011/1/29Slide at PyCon mini JP on 2011/1/29
Slide at PyCon mini JP on 2011/1/29
 
String representation in py3k
String representation in py3kString representation in py3k
String representation in py3k
 

Dernier

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 

Dernier (7)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

Introduction to cython