問題タブ [python-cffi]

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 に答える
1076 参照

python - CFFI は特定のディレクトリにある c ファイルをどのように使用しますか?

私はCFFIによってpythonプログラムでcを呼び出し、以下のように「add.c」という名前のcファイルを書くことを学んでいます:

「demo.py」という名前の python ファイルで、「add.c」の add メソッドを呼び出します。

demo.py を実行すると、add.c ファイルが見つからないというエラーが表示されます。ファイル add.c が見つからないのはなぜですか? どうすれば修正できますか?

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

python - cfi が numpy よりもはるかに高速なのはなぜですか?

私は cffi モジュールを python で書いて遊んでいますが、その速度は、標準の python を正しく使用しているかどうか疑問に思っています。完全にCに切り替えたくなる!正直なところ、C で自分自身を再実装することはできなかった素晴らしい Python ライブラリがいくつかあるので、これは実際には何よりも仮説にすぎません。

この例は、numpy 配列で使用されている Python の sum 関数と、ac 関数と比較してどれだけ遅いかを示しています。numpy 配列の合計を計算するより高速な pythonic の方法はありますか?

関数が機能することを示すためだけに:

この単純な関数の時間を計ると、numpy が本当に遅いことがわかります。numpy を正しい方法で使用していますか? Pythonで合計を計算するより速い方法はありますか?

回:

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

python - 相互運用性のアドバイス - Python、C、Matplotlib/OpenGL 実行時の効率

現在の状況:

  • ほぼ同じタイプのシミュレーションを毎回実行するように C コードが書き直されている (マウスの学習行動)
  • 結果をプロットするためのシミュレーションごとに作成された Matlab コード (2D、場合によっては 3D グラフ)

ここに私の目標があります:

  • 動的シミュレーターを構築できる GUI (wxPython) を設計する
  • GUI には、OpenGL (またはおそらく Matplotlib) を介したシミュレーションの結果も表示されます。
  • C ラッパー (CFFI) を使用してシミュレーションを実行し、結果 (平均) を OpenGL または Matplotlib に送信します。

質問:

  • このソフトウェアを可能な限り効率的に実行するために、CFFI を使用してシミュレーションを実行することは理にかなっています...私が確信していないのは、その FFI インスタンス (またはOpenGL Cバインディングを使用してすべてのグラフィックスを行い、結果のグラフをPythonレイヤーに渡してGUIに表示するか、CFFIにシミュレーションの平均(プロットされるデータ)を変数に送信させますPython レベルで、PyOpenGL または Matplotlib を使用してグラフをプロットします。
0 投票する
0 に答える
210 参照

python - python-CFFI を使用して確率変量生成関数を GSL でラップするにはどうすればよいですか?

私が抱えている問題は、GSL の確率変量 (RV) 生成関数が、次gsl_rngのような引数の 1 つとして特別な構造体へのポインターを必要とすることです。

すべての RV 生成関数は、 で表される同じ「ランダム性のソース」を共有するためgsl_rng * r、C での一般的な使用パターンは、gsl_rng * r前もって構築し、その後、さまざまな確率変量生成関数を呼び出しrて、最後に分解することです。

Python で CFFI を使用してネイティブ C 呼び出しを行い、モンテカルロ シミュレーション プログラムを高速化したいと考えています。私が今持っている問題はgsl_rng * r、Python から呼び出すすべての RV 生成関数で共有されていることを確認しながら、Python 側から C ポインターを適切に「隠す」方法ですか?

PS私は、次のようにCythonでこれを達成する方法を知っています:

0 投票する
3 に答える
1954 参照

python - cffi 列挙型へのアクセス

cffi の下に列挙型を定義するとします。

これで、再度呼び出すときに簡単にアクセスできますcdef。しかし、再宣言せずに、Pythonでこの列挙型にアクセスするにはどうすればよいでしょうか? ドキュメントに言及が見つかりません。