問題タブ [python-c-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
94 参照

generator - ジェネレーター機能を Python/C クラスに追加する

Python/C API を使用して C でクラスを作成しました。C BLOB のデータ項目を反復処理する必要があります。長さが 50K を超えるため、PyList を返すことは望ましくありません。ジェネレータのような機能を提供する方法はありますか?

私の 1 つの解決策は、クラスを別の純粋な python クラスでラップし、そのレベルでジェネレーター関数を記述することです。別の方法はありますか?

0 投票する
2 に答える
5849 参照

c++ - PowerBuilder 10.0 エラーで DLL から外部関数を呼び出す

2 つの外部関数を作成する Visual C++ 2008 を使用して DLL を作成しました。Python を使用して、これらを実行するための 2 つの個別の実行可能関数を作成しました。PowerBuilder を使用して関数を呼び出すと、最初の実行可能ファイルが正常に実行されます。2 番目の実行可能ファイルは、実行時エラーになります: error calling external function %s. 私は.defファイルを使用し、各関数の正しい序数を持っています。何かアドバイス?

C での関数宣言は次のとおりです (非常に長くて申し訳ありません)。

powerbuilder では、外部関数宣言は次のとおりです。

start_grain_size はエラーになります

0 投票する
2 に答える
8659 参照

python - Python を C に埋め込む - モジュールのインポート

ドキュメントに従って C 用の埋め込み Python を使用すると問題が発生します- インポートされたモジュールを使用しようとすると、次のようになります。

PythonIncl.exe の 0x1e089e85 で未処理の例外: 0xC0000005: アクセス違反の読み取り場所 0x00000004。

エラーはPyObject_GetAttrString()メソッドで発生し、ドキュメントはあまり役に立ちません。IBM の例のようにチュートリアルも使用してみましたが、常に同じアクセス違反が発生します。

以下は、動作しないように見えるチュートリアルの 1 つからのサンプル コードです。ここで何が問題なのですか?

C コード (1 つのメイン ファイル内):

Python コード (reverse.py という名前のファイル内、同じフォルダー内):

MSVS2008、Python 2.7 を使用して XP マシンを実行しています

ちょっとしたコンテキスト: OpenOPC を使用する小さな python スクリプトをかなり大きな C プログラムに埋め込もうとしていて、2 つの間でデータを転送したいと考えています。ただし、基本的な例を使用した概念実証テストでは、すでに失敗しています。

0 投票する
2 に答える
403 参照

python - Python 関数がガベージ コレクションを取得するのはなぜですか?

Python コールバックを使用する C++ ライブラリがあります。コールバック、つまり PyObject* はクラス UnaryFunction のオブジェクトに格納され、コンストラクタ Py_INCREF がそれを呼び出します。デスタクタ Py_XDECREF はそれを参照します。それが問題です。インタープリターは、その DECREF でセグメンテーション違反を起こします。

私の解決策は、DECREFしないことですが、それは間違っているようです。関数の参照カウントを INC/DEC する適切な方法は何ですか? さらに重要なことに、他のライブ参照があるときにインタープリターが関数本体を GC しようとするのはなぜですか?

編集: Linux では、セグメンテーション違反の代わりに、次のようなアサーション失敗が発生します。

python: Objects/funcobject.c:442: func_dealloc: Assertion 'g->gc.gc_refs != (-2)' failed.

0 投票する
1 に答える
1906 参照

c++ - Python+numpyコードをC++dllコールバックに埋め込む

私はPython埋め込みの初心者です。私はPython+numpyコードをC++コールバック関数内(dll内)に埋め込もうとしています

私が直面している問題は次のとおりです。私が持っている場合:

すべてが正常に動作します。

しかし、私が持っている場合:

これは、2回目に_import_array()に到達したときにクラッシュします。(最初のコールバックで機能することを意味します)

代わりに、pythonとnumpyの初期化を1回だけ実行し、デストラクタでファイナライズを実行すると(したがって、初期化/ファイナライズのたびにではありません)、コールバックを終了するときにすべてがクラッシュします。

ここでの問題は厄介だと思いますが、解決方法がわかりません

0 投票する
1 に答える
4590 参照

python - Python C API がモジュールをロードしない

C API を使用して、C で数学と numpy インポートを含む python モジュールをロードしようとしています。モジュールを読み込んで実行できますが、数学モジュールをインポートすると機能しません。

Arch Linux、Python 2.7.2、および gcc を使用しています。

ここにコード:

func.py

また、スクリプトを使用せずに Python スクリプトを C に埋め込むにはどうすればよいでしょうか?

0 投票する
1 に答える
4118 参照

python - Numpy C-Api の例では SegFault が返されます

Python C-Api の仕組みを理解しようとしており、Python と C 拡張機能の間で numpy 配列を交換したいと考えています。

そこで、このチュートリアルを開始しました: http://dsnra.jpl.nasa.gov/software/Python/numpydoc/numpy-13.html

そこで最初の例を実行しようとしました.2d numpy配列のトレースを計算するCモジュールは、2d配列でも基本操作を実行したいので、私にとって非常にうまくいきました。

モジュールの名前は trace で、setup.py ファイルでコンパイルされます。

ファイルがコンパイルされ、trace.so が IPython にインポートされますが、trace() メソッドを使用しようとすると、Segmentation Fault が発生します。理由はわかりません。

これを Fedora 15、Python 2.7.1、gcc 4.3.0、Numpy 1.5.1 で実行します

0 投票する
1 に答える
149 参照

python - PyArray_BOOL 宣言 & C 拡張でブール値の Numpy 配列を操作する

私のコードには、C 拡張機能を書きたいブール値の NumPy 配列があります。C ルーチンで使用するために連続した配列を取得しようとすると、次のように使用します。

しかし、PyArray_BOOL が宣言されていないというコンパイラ エラーが発生します。

なぜそうなのですか?このタイプは宣言されていませんか?そうである場合、ブール値の配列を C に導入するにはどうすればよいですか?

ありがとう!

0 投票する
4 に答える
8109 参照

python - PyArrayObjectデータをC配列に型キャストする

C拡張機能でNumpy配列を操作したいと思います。この場合の多くの例では、PyArrayObjectの構造を使用しています。

array->data , array->strides[0] , array->strides[1] , ...

データに到達するためのポインタ、より馴染みのある(またはよりきちんとした)方法で配列に到達したい場合は、次のようなインデックスを使用します

array[i][j]

どのように進めればよいですか?array-> dataを型キャスト(bool *)して、作成したC配列で作業する必要がありますか?(私の要素はboolsです)

今のところ私の関数宣言は(もちろん、まだ終わっていません)

ありがとう!

0 投票する
1 に答える
1316 参照

python - CApi の PyArg_ParseTuple SegFaults

NumPy 配列の C API に慣れようとして、コードを書いています。

これは簡素化されたバージョンです。PyArrayObjectタイプのオブジェクトを取得して返すことができるようにしたいだけです。残念ながら、これにより SegFault も発生します。

Linux、64 ビット、Python 2.7.1