PythonからC言語の関数を呼び出す

ctypesモジュールを使用して、PythonプログラムからCの関数を呼び出すことができます。

PythonからCの関数を呼ぶ

以下の手順が含まれています。

    1. 必要な関数を持つCファイル(.c拡張子)を作成する。

 

    1. Cコンパイラを使用して、共有ライブラリファイル(.so拡張子)を作成する。

 

    1. 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
C File Shared Library File

ステップ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
>>> 
Calling C Function From Python

Cプログラムのファイルを変更すると、共有ライブラリファイルを再生成する必要があります。

結論

Pythonのデフォルトの実装はCプログラミングで書かれており、CPythonと呼ばれています。そのため、PythonプログラムでCの関数を使うことは珍しくありません。このチュートリアルでは、PythonプログラムでCの関数を簡単に呼び出す方法を学びました。

コメントを残す 0

Your email address will not be published. Required fields are marked *