問題タブ [cython]
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.
python - Cython float 除算 PyExc_ZeroDivisionError チェック
私はいくつかのループ集約的な計算を行っており、コードを Cython に変換しています。cython -a オプションを使用してプロファイリングを行い、.html ファイルを調べたところ、float 除算を行うたびに、やや黄色い線があり、次のような処理が行われるようです。
分周器が 0 の場合だと思います。そのために定数を使用していますが、分周器が 0 である可能性はありません。それを高速化するために何かできることはないかと考えていました。
python - Python オブジェクトへのポインターを返す関数を ctypes でラップする
PyUFunc_FromFuncAndDataを使用して、C関数をコンパイルしてnumpyジェネリック関数を作成するコードがいくつかあります。ufunc を作成するためにいくつかの cython を作成しましたが、配布するつもりであり、ユーザーのコンパイル手順を回避したいので、可能であれば ctypes で実行したいと考えています。
問題は、PyUFunc_FromFuncAndData が PyObject へのポインターを返すことです。Python コードからオブジェクトとして使用することは可能ですか?
基本的に、次の cython コードを python/ctypes に変換できるようにしたいと考えています。
python - Cython の計算が正しくない
Python で pi を計算するために Madhava–Leibniz 級数を実装し、次に速度を向上させるために Cython で実装しました。Python バージョン:
Cython バージョン:
Python バージョンを停止すると、pi が 3.141592 に正しく計算されました。Cython のバージョンは最終的に 3.141597 になり、覚えていない (端末がクラッシュした) 数字がいくつかありましたが、正しくありませんでした。Cython バージョンの計算が正しくないのはなぜですか?
cython - Cython 再帰構造体宣言
リンクリストを定義するCythonでC構造体を使用しようとしています:
ご覧のとおり、独自の定義内で query_result タイプを使用しています。Cython でこれをそのまま使用すると、コンパイラ エラーが発生します。
Cython でこの再帰的な定義を適切に処理する方法についてのアイデアはありますか?
cython - Cython で構造体要素を取得する
驚くべきことに、名前で構造体の要素を取得する単一の例を見つけることができないようです(Webとcythonの例の両方で)。
したがって、C関数から構造体へのポインターを受け取っており、それらの要素に1つずつアクセスして、それらをpythonリスト/辞書に再パッケージ化したいと考えています。
多分:
また
の効果を得たいstructName->propertyName
。
python - Cython で openMP などを使用するにはどうすればよいですか?
基本的に、私は並列化をかなり困難にする問題を抱えており、プレーンな python とマルチプロセッシングでどれだけ速くできるかの限界に達したと思うので、Cython とできれば openMP を介してそれをより低いレベルにしようとしています。 .
つまり、Cython で openMP を使用する方法、または生の C コードをラップして Cython 経由でロード/バインドする必要があるかどうか疑問に思っています。
または、Cython を C コードにコンパイルしてから、C コードを変更して openMP プラグマを追加し、ライブラリにコンパイルして Python にロードできますか?
python - Cython で固定長の変更可能な Python オブジェクトの配列を作成するにはどうすればよいですか?
トライ データ構造の作成に使用する Python オブジェクトの配列が必要です。タプルのように固定長で、リストのように変更可能な構造が必要です。リストが正確に正しいサイズであることを確認できるようにしたいので、リストを使用したくありません(余分な要素の割り当てを開始すると、トライが大きくなるにつれて、メモリのオーバーヘッドが急速に増加する可能性があります)。これを行う方法はありますか?オブジェクトの配列を作成してみました:
...しかし、それはエラーを出しました:
私がやろうとしていることを行うための最良の方法は何ですか?
c++ - Cython を使用して C++ 共有オブジェクト ライブラリで Python を拡張する
したがって、基本的には、C++ で記述され、ユーザーが共有オブジェクト ファイル (Linux [* nix? Mac でどのように機能するかはよくわかりません]) または API を自分で使用するために参照できる dll (Windows の場合) です。Cython でかなりの時間を試した後、単一のファイルである限り、独自の拡張機能を作成できますが、複数のファイルの使用についてオンラインで何も見つけることができません (これは明らかに、実際のプロジェクトなのでPython プロジェクトにインポートできる単一の .so にコンパイルします。Cython を手動で調べて使用し、.cpp ファイルごとに .pyx ファイルを作成する必要がありますか (多数あります)。それらをcppファイルにコンパイルしてから編集し、makeファイルを使用してそれらを.soファイルにコンパイルしますか、それとももっと自動化された方法がありますか? (ps Cythonでそれぞれ個別にコンパイルしてみましたが、「#include < path/file >」表記が気に入らなかったようで、ほとんどのファイルをコンパイルできませんでした)
その他の情報: 私は ctypes を使用してライブラリとやり取りすることができましたが、それは非常にハック的で非 Pythonic であると感じました。Cython は非常に便利な資産になる可能性があるため、Cython でもう少し経験を積みたいと思っています。 .
python - Python 関数をサイトン化して高速化する
数週間前、私は Python で書かれた関数の速度を上げることについて質問しました。その時、TryPyPy は Cython を使用する可能性に注目しました。彼は親切にも、そのコード スニペットを Cythonize する方法の例を示してくれました。以下のコードで同じことを行い、変数の型を宣言することでどれだけ速くできるかを確認したいと思います。それに関連していくつか質問があります。cython.org のチュートリアルを見ましたが、まだいくつか質問があります。それらは密接に関連しています。
- C はまったくわかりません。Cython を使用して変数の型を宣言するには、どの部分を学ぶ必要がありますか?
- Pythonのリストとタプルに対応するCの型は何ですか? たとえば
double
、Cython forfloat
in Python で使用できます。リストはどうすればいいですか? 一般に、特定の Python 型に対応する C 型はどこにありますか。
以下のコードを Cythonize する方法の例は、本当に役に立ちます。変数の型に関する情報を提供するコードにコメントを挿入しました。
python - Windowsでのcythonプログラムの構築に問題があります
Python2.6で構成されたWindowsXPマシンでcythonを使い始めていました。Cythonサイトで簡単な例を実行しようとしましたが、例の.pyxファイルの変換がすぐに失敗し、紛らわしいエラーが発生します。
.pyxファイルは
setup.pyは次のようになります
コマンドウィンドウで、コマンドを実行します
これはすべて、Webページの指示どおりであることに注意してください。
その結果、次の出力が得られます。
エラーメッセージには「認識されない文字」と表示されます。
Linuxボックスで同じ例を試しましたが、正常に動作します。
ここでの問題は何ですか?また、コロンが認識できないというフラグが立てられているのはなぜですか?