問題タブ [cpython]
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 - クロスプラットフォーム GUI 開発のための CPython vs. Jython vs. IronPython
デジタル ハードウェア設計用の実験的な IDE を作成することを考えています。だから私は魔女のプラットフォームを選ぶことを決めることができません.
構文の強調表示、いくつかのベクター グラフィックス、および多数のタブ付きウィンドウを備えたテキスト エディターを使用する予定です。
私の目標: 1. できる限り少ないカスタム コンポーネントを使用して GUI を作成する。2. 可能な限りクロスプラットフォームにする
(CPython と Jython がクロスプラットフォーム対応であることは既に知っていますが、IronPython+Mono はどうでしょうか?)
では、質問は GUI に関するものです。何を選択すればよいでしょうか。
python - オブジェクトサイクル(参照カウント)の検出を支援するためにcpythonは何をしますか?
私がcpythonについて読んだことから、相互に指しているオブジェクトを検出/解放するための参照カウント+何か余分なものがあるようです(間違っている場合は訂正してください)。誰かが何か特別なことを説明できますか?また、これはサイクルリークがないことを保証しますか?そうでない場合は、参照カウントに追加してリークしないようにすることが証明されているアルゴリズムの研究はありますか?これは、非参照カウントトレースgcを頻繁に実行しているだけでしょうか?
*外部関数インターフェイスを使用したモジュールのバグと問題の割引
python - CPythonでid({})== id({})およびid([])== id([])なのはなぜですか?
CPython(他のPython実装についての手がかりがない)が次のように動作するのはなぜですか?
理由はいくつかありますが、具体的な理由がわかりません。
編集
グレンとトーマスの主張をさらに証明するには:
python - PyCXX内でnumpy配列にアクセスする方法
C++ 側で numpy 配列を double* または stl ベクトルに変換したいと思います。私は実際にこれに PyCXX を使用していますが、データにアクセスする方法がわかりません。
私は現在、次のようにデータバッファにアクセスして返すことができます:
しかし、私はそれをどうするかわかりません。私の最終的な目標は、そこから gsl_vector を取得することです。理想的には、メモリを再コピーする必要はありません。しかし、多分それはあまりにも多くを求める;)
python - set()はどのように実装されますか?
setPythonのオブジェクトにはO(1)メンバーシップチェックがあると言われているのを見てきました。これを可能にするために、それらはどのように内部的に実装されていますか?どのようなデータ構造を使用していますか?その実装には他にどのような影響がありますか?
ここでのすべての答えは本当に啓発的でしたが、私は1つしか受け入れることができないので、元の質問に最も近い答えを使用します。情報をありがとう!
python - Python C拡張機能はスレッドセーフではありませんか?
かなり労力のかかる python スクリプトから ac 拡張機能を作成しました。コード自体は十分にテストされており、単純です。c 拡張機能は、いくつかの大きなリストで呼び出され、巧妙な演算を実行していくつかの新しいリストを返します。c 拡張は 100% 自己完結型であり、他の c 関数を使用せず、python オブジェクトのメソッドも使用しません (ただし、これらの標準的な Python メソッドを使用します: PyFloat_AsDouble、PyList_GetItem、PyList_Size、PyList_New、Py_BuildValue、PyList_Append )。これまで、非マルチスレッド環境でしか使用していませんでした。
今日、私はマルチスレッド GUI 環境でそれを使い始めました。デバッグに使用するいくつかのテストケースがありますが、奇妙なことに、小さいものは問題なく通過しますが、大きいものはバスエラーとセグメンテーション違反を引き起こします (GUI が完全にクラッシュし、OS X で「Python の問題レポート」ウィンドウが表示されます)。 . 私の c エクステンションがスレッドセーフではないという問題はありますか? もしそうなら、どうすればスレッドセーフにできますか? この件についてグーグルで調べてみましたが、意味をなすような良い情報は見つかりませんでした。これとこのページをチェックしましたが、彼らが何を言っているのかよくわかりません。GIL を必要とするのはどのタイプのコードで、どのタイプのコードは不要ですか?
ここで価値があるのはダンプです:
python - Python 対話型シェルにコマンドを追加するにはどうすればよいですか?
Python でかなり定期的に入力するコマンドのキーストロークを数回だけ節約しようとしています。
私のpython startup scriptでは、 import に似た load という関数を定義していますが、いくつかの機能を追加しています。単一の文字列を取ります:
この関数を呼び出すには、入力する必要があります
単純に次のように入力したいと思います。
私はreadlineをサポートする Python を実行しているので、ある程度のプログラミングが可能であることは知っていますが、それを使用してこの種のことが可能かどうかはわかりません。
InteractivConsole次のように、を使用して起動ファイルにインスタンスを作成することで、これを回避しようとしました。
これは、Python インタープリターを終了するために Ctrl-D を 2 回押す必要があるという警告に対応しています。
カスタム C プログラムを作成してインタープリターを埋め込むことなく、これを行う方法はありますか?
編集
チャンネル外で、これをスタートアップ ファイルの最後に追加することを提案しました。
それは十分に機能しますが、私はまだ代替ソリューションに興味があります.
python - OpenCV:Pythonインターフェースでのメモリリークですが、Cバージョンではありません
これまでOpenCV開発者から何の助けも得られなかったので、ここで質問しています。私は問題を非常に単純なテストケースに減らしたので、おそらくCPythonのバックグラウンドを持っている人なら誰でもここで役立つでしょう。
このCコードはリークしません:
このPythonコードはリークします:
(OpenCVの現在のSVNトランクコードの)CPythonコードを検索したところ、次のことがわかりました。
..。
..。
そして、OpenCV Cヘッダーから:
これまでPythonへのCインターフェースを使用したことがなかったため、すべてを正確に理解しているわけではありません。しかし、おそらく私が探しているバグはこのコードのどこかにあります。
私は正しいですか?または、どこでバグを検索する必要がありますか?どうすれば修正できますか?
(この質問の以前のバージョンを見た人への注意:間違ったコードを見ました。彼らのSWIGインターフェースは非推奨になり、もう使用されていません(しかし、コードはまだSVNに残っていたので、混乱させました。だからしないでください。調べてみるとinterfaces/swig、このコードは古く、使用されていません。現在のコードはにありmodules/pythonます。)
java - JavaからのCPython?
JavaからCPythonコードを呼び出す必要があります。これを行うのに役立つツール/API/ライブラリはありますか?
Pythonコードはに大きく依存しているため、Jythonはオプションではありませんnumpy。
編集1:main()関数はPythonではなくJavaである必要があります(つまり、CPythonをJavaに埋め込む必要があり、その逆はありません)。
編集2:JavaとPythonの間で大きな数値配列を渡すことになるので、2つを同じプロセススペースに入れるソリューションが望ましいことにも言及する必要があります(必須ではありません)。
python - CのライブラリとしてのCPython(CからPythonコードを実行するため)
私はCの専門家ではないので、私が求めているのはおかしいかもしれません。
ARM c-compiler(yagartoやarm-gccなど)を使用してCPythonをコンパイルし、それをCアプリケーションから呼び出してPythonコードの行を処理することは可能ですか?
もしそうなら、私が見なければならないリソース/ドキュメントは何ですか?