Inlinec - Python スクリプトで C コードを使用する新しい方法

事業 インライン C コードを Python スクリプトにインライン統合するための新しい方法が提案されました。 C 関数は同じ Python コード ファイル内で直接定義され、「@inlinec」デコレータで強調表示されます。 概要スクリプトは Python インタプリタによってそのまま実行され、Python で提供されるメカニズムを使用して解析されます。 コーデックこれにより、インタプリタによってスクリプトを解析する前に、パーサーを接続してスクリプトを変換することが可能になります (原則として、コーデック モジュールは透過テキストのトランスコーディングに使用されますが、スクリプトの内容を任意に変換することもできます)。

パーサーはモジュール (「from inlinec import inlinec」) として接続され、初期処理を実行し、@inlinec 注釈を使用して強調表示された C 関数の定義をオンザフライで ctypes バインディングに変換し、C 関数の本体を次のように置き換えます。これらのバインディングへの呼び出し。 このような変換の後、Python インタプリタは、スクリプトの正しく変換されたソース テキストを受け取ります。この中で、C 関数は次のように呼び出されます。 ctypes。 同様の手法がプロジェクトでも使用されています Pyxl4を使用すると、HTML と Python コードを XNUMX つのファイルに混在させることができます。

#コーディング:インライン
inlinec からインポート inlinec

@inlinec
デフォルトテスト():
#include
void テスト() {
printf("こんにちは、世界");
}

この開発はこれまでのところ実験的なプロトタイプとして提供されており、関数にポインター (文字列を除く) を渡す機能がサポートされていないこと、関数を実行する必要があることなどの欠点があります。
コード前処理用の「gcc -E」。中間 *.so、*.o、および *.c ファイルを現在のディレクトリに保存し、変換されたバージョンをキャッシュせず、不要な解析ステージを実行します (実行するたびに長い遅延が発生します)。

出所: オープンネット.ru

コメントを追加します