問題タブ [python-c-extension]
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 - Linuxでctypesを使用してc ++とpythonをリンクする
Pythonでプログラムを書いています。今、私は ctypes を使用して、c++ にあるクラスのいくつかの関数を使用したいと考えています。基本的に、私はPythonでデータの配列を持っています。その配列を使用して画像クラスに変換することになっているC ++の別のプログラムがあります。これが私がc ++で持っているプログラムです。私はすでにLinuxでメイクファイルを作成しており、コンパイルします。
ファイルの名前は「pclink.cpp」です
また、.so ファイルと .o ファイルを作成しましたが、すべて問題ないようです。しかし、Pythonで私が入力するとき
これは私が受け取るメッセージです
以前、クラスを持たない単純なプログラムで c++ と python をリンクしようとしましたが、正常に動作しました。別のクラスからオブジェクトを定義しようとすると問題が発生するようです。誰でも問題を解決する方法を知っていますか?ありがとう
python - PythonオブジェクトをC拡張に渡し、そのメソッドを内部で呼び出す方法は?
メソッド「m()」を持つpythonオブジェクト「o」があり、それを次のように渡したいとします:
どうやら最後のコメント行がコンパイルされていないようで、これを達成できる方法があるかどうか疑問に思っています。
python - PythonリストをC拡張関数に渡し、いくつかの値を追加する方法は?
私はpythonリストを持っているとしましょう:
次のC拡張に渡したい:
上記の関数を変更して、コメント行でやりたいことを達成する方法を知りたいです。
python - Python C-extensionのPyObjectを文字列型に変換するにはどうすればよいですか?
適切な機能が見つかりません。アドバイスをありがとう。
python - PythonC拡張機能でchar[]をPyObject_CallMethodにきちんと渡す方法
メソッド「coor()」を持つ「m1」というPythonオブジェクトがあります。それをC"++"拡張機能に渡し、内部で "coor()"を呼び出します。最初に試しました:
そして、次の厄介なコードが機能することを発見しました:
それを行う簡単な方法があると思います。これはおそらく初心者向けのchar[]に関するCの質問であり、アドバイスに感謝します。
python - Python C拡張機能でPyList_Appendを処理するときに、Py_DECREF/INCREFで失われました
PyList_Appendを処理するときに、Py_DECREF/INCREFで迷子になります。誰かが次のコードについてコメントをすることができますか?
python - 実行時にPythonモジュールのコピーを作成するにはどうすればよいですか?
ソケットモジュールを使用できるようにするには、ソケットモジュールのコピーを作成し、もう1つのソケットモジュールにモンキーパッチを適用して、別の方法で使用する必要があります。
これは可能ですか?
つまり、モジュールを実際にコピーすることを意味します。つまり、実行時に、コピーし、関数をsocketmodule.c
に変更して、拡張機能としてインストールした場合と同じ結果を取得します。initsocket()
initmy_socket()
my_socket
python-c-extension - Python C拡張機能にsocketmodule.hを含めることは可能ですか?
Python C 拡張の socketmodule.h で定義された PySocketModule_ImportModuleAndAPI 関数を呼び出したいと思います。
python - 並列pythonワーカーの正常な失敗
非常に複雑な機械学習の問題を並列化するために pp を使用しているときに、さまざまな品質のサードパーティ ライブラリにかなり広範囲に依存する必要があることに気付きました。特に、さまざまなデータセットで集中的に使用すると、かなりの量のエッジ ケース クラッシュが発生します。最終的にはこれらを解決する必要がありますが、短期的には自分のバグと彼らのバグの両方を修正しようとするのは多すぎます - そしてこのライブラリは本当に最高のものです.
私の質問は次のとおりです: pp でローカル ワーカー プロセスの適切な失敗を許可するために使用される確立されたパターンはありますか?
私が見ているオプションは次のとおりです。
- ローカル ワーカー プロセスは一切使用せず、REMOTE ワーカーのみを使用し、ソケット タイムアウトに依存します。
- シェルはすべて、別のプロセスとしてラップして実行するセカンダリ python スクリプトに変換し、終了コードを使用してクラッシュをチェックします。これはおそらく、セグメンテーション違反以外の障害の場合を防ぐために、タイムアウトと組み合わせる必要があります。
ここで何か不足していますか?私は pp.py を見てきましたが、私が知る限り、ワーカープロセスに終了検出はありません。
python - Pythonのメモリ不足(サフィックスツリーの使用)
いくつかのコードで少し問題が発生しています。私はひどいプログラマーなので、私の解決策はおそらくあまり雄弁ではないことを覚えておいてください(そしておそらく私がメモリを使い果たしている理由-私は4ギガバイトを持っていて、スクリプトはゆっくりとそれを満たします)。
ここに問題があります。ディレクトリに約3,500個のファイルがあります。各ファイルは、スペースのない比較的少数または多数の文字を含む可能性のある1行で構成されます(最小のファイルは200バイトであるのに対し、最大のファイルは1.3メガバイトです)。私がやろうとしているのは、これらのファイル間で設定された長さの2つの共通の部分文字列を見つけることです(以下のコードでは13文字です)。それらすべてに共通のサブストリングを探しているのではなく、すべてのファイルが比較されるまで2つの組み合わせを探しているので、一度に2つ実行します。つまり、ファイル間で設定された長さの共通のサブストリングであり、すべてのファイルに共通のサブストリングではありません。
C実装をラップするサフィックスツリーモジュールを使用します(ここ)。最初にディレクトリ内のすべてのファイルのリストを作成し、次にすべての組み合わせがカバーされるように2つの組み合わせを探し、一度に2つのファイルをサフィックスツリーに渡し、次に一般的なサブストリングであるシーケンスを探します。
しかし、なぜそれがゆっくりとメモリを使い果たしているのか、私にはよくわかりません。未使用のもののメモリをなんとかしてクリアするように、コードに修正を加えることができるといいのですが。もちろん、3,500ファイルの処理には長い時間がかかりますが、4ギガバイトのメモリを段階的にいっぱいにすることなく処理できることを願っています。どんな助けでも大歓迎です!これが私がこれまでに持っているコードです:
更新#1
更新されたコードは次のとおりです。Pyrceの提案を追加しました。しかし、jogojapanがCコードのメモリリークを特定し、それが私の専門知識をはるかに超えていることを考えると、私ははるかに遅いアプローチをとることになりました。この分野に精通している人がいれば、Cコードを変更してメモリリークや割り当て解除機能を修正する方法を知りたいと思います。PythonのCサフィックスツリーバインディングは非常に価値があると思います。接尾辞木なしでこのスクリプトを介してデータを実行するにはおそらく数日かかるので、誰かが創造的な修正を持っているかどうかを確認することは間違いなくオープンです!