PythonからC言語の関数を呼び出す
ctypesモジュールを使用して、PythonプログラムからCの関数を呼び出すことができます。
PythonからCの関数を呼ぶ
以下の手順が含まれています。
-
- 必要な関数を持つCファイル(.c拡張子)を作成する。
-
- Cコンパイラを使用して、共有ライブラリファイル(.so拡張子)を作成する。
-
- Pythonプログラムでは、共有ファイルからctypes.CDLLインスタンスを作成する。
- 最後に、{CDLLインスタンス}.{関数名}({関数パラメータ})の形式でC関数を呼び出す。
ステップ1:いくつかの関数を持つCファイルを作成する。
#include <stdio.h>
int square(int i) {
return i * i;
}
私たちは、整数の二乗を返すシンプルなCの関数を持っています。私はこの関数のコードを、my_functions.cというファイルに保存しました。
ステップ2:共有ライブラリファイルの作成
Cソースファイルから共有ライブラリファイルを作成するために、次のコマンドを使用できます。
$ cc -fPIC -shared -o my_functions.so my_functions.c
ステップ3:PythonプログラムからC関数を呼び出す
>>> from ctypes import *
>>> so_file = "/Users/scdev/my_functions.so"
>>> my_functions = CDLL(so_file)
>>>
>>> print(type(my_functions))
<class 'ctypes.CDLL'>
>>>
>>> print(my_functions.square(10))
100
>>> print(my_functions.square(8))
64
>>>
Cプログラムのファイルを変更すると、共有ライブラリファイルを再生成する必要があります。
結論
Pythonのデフォルトの実装はCプログラミングで書かれており、CPythonと呼ばれています。そのため、PythonプログラムでCの関数を使うことは珍しくありません。このチュートリアルでは、PythonプログラムでCの関数を簡単に呼び出す方法を学びました。