問題タブ [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.
python - C API を使用して Python コードを実行し、中断して再開する
C プログラムから、Python/C-API を使用して Python スクリプトを実行しています。を使用しますPyRun_SimpleFile
。これは、Python スクリプトを読み取り、最後まで実行します。
特定の Python コマンドが実行されたときに、Python スクリプトを「中断」したいと考えています。と呼びましょうcwait()
。その後、コントロールは C which に戻ります。C プログラムがそうすることにした場合、中断された場所で Python スクリプトの実行を再開する必要があります。
したがって、次のような Python スクリプトを記述できるようにしたいと考えています。
C が実行されるか、Python が実行されるという意味で、この協調的マルチタスキングと呼ぶことができます。
C プログラムは、Python スクリプトを読み取って実行する「マスター」でなければならないことに注意してください。コマンドラインから、次のように入力します。
run_script -p my_script.py
python - リストには __reverse__() 特別なメソッドがあるのに、タプルには Python にないのはなぜですか?
reversed(seq)
Pythonの組み込みは、メソッドが必要であるか、シーケンス プロトコルをサポートするseq
必要があることを示します。__reversed__()
リストとタプルはどちらも明らかにシーケンス プロトコルをサポートしていますが、代わりにリストには独自の__reversed__()
メソッドが使用されています。
__reverse__()
次に、シーケンスプロトコルが逆に提供するよりも、リストの最適化が高速である必要があります。そこで、listobject.c に実装されているソース コードを調べましたが、C の知識が非常に限られているため、タプル ( __reversed__()
tupleobject.c ) が同様の内部反転メソッドを持たない理由を理解できません。PyTuple_MAXSAVESIZE
割り当てとメモリのいくつかの最適化 ( ) を使用して配列を Bean に変換し、リストをより使い慣れた配列にします。
__reversed__()
メソッドの実装をリスト型の最適化にする、私が見逃しているCの魔法は何ですか?タプルには標準の反復子プロトコルの方が適していますか?
z3 - Z3 では: if then else ベースの条件は (変数の評価に基づいて) どのように定式化されますか?
私は Z3 を初めて使用しますが、考えられるさまざまな評価に基づいて条件付きの新しい割り当てを表現する方法をまだ見つけることができませんでした。https://github.com/Z3Prover/z3/blob/master/examples/c/test_capi.c#L1846の If-then-else の例では 、true または false への割り当てを行う必要があります。別の変数の可能な評価に基づいて true または false にします。これどうやってするの?
評価の例では、計算された値を使用して、後でアサーションによってチェックされるまだ評価されていない値に影響を与えたいと考えています。それで、これが新しい(評価ベースの)条件で国連評価されたモデルをコンテキストに戻す方法である場合はどうすればよいですか?つまり、最終評価なしで複合条件を実行したいのです。それは可能ですか?
lua - Luaの2つの値が基本的に等しいかどうかを確認するには?
Lua で ( " __eq
" メタメソッドを使用して) 等価演算子をオーバーライドする場合、プリミティブの等価性をチェックする方法はありますか (つまり、オーバーライドされた を呼び出さず__eq
に、2 つのテーブル値が参照的に同じかどうかをチェックしますか?)、これを行う必要があります。 C APIからですが、そこに適切な関数が見つかりません。
例えば:
Whereはメタメソッドsome_comparison()
を呼び出しません__eq
。
lua_compare()
(特に、これを満たさないことに注意してください。必要lua_rawcompare()
であれば、または同等のものを提供するトリックまたは回避策が必要です。アイデアは、__eq
実装での無限再帰を防ぐことです...)
c++ - エラー: '->' のベース オペランドに非ポインター型 'cv::Mat' があります
私は c-Api opencv プロジェクトを持っていて、c++ (mat) に変更したいです。この元のコードを参照してください。
このプロジェクトを実行した後、このエラーを参照してください
'->' が使用されているすべての行のエラーを参照してください。私を助けてください ...