スタックレス Python と PyQt
-
20-09-2019 - |
質問
Stackless Python と PyQt についてはどのような経験がありますか?
人々が解決してくれると嬉しい問題:
スタックレス用の PyQt のコンパイル:PyQt は特にスタックレス用にコンパイルする必要がありますか?コンパイルはスムーズですか?バインディングなどの問題
安定性:予期せぬクラッシュ、フリーズ、一時停止、その他の奇妙な現象はありましたか?
メモリ管理:メモリリークの兆候。スタックレス/プレーンバニラ PyQt アプリケーションに必要な RAM の比較
ソフトウェア エンジニアリングの強化:スタックレスを利用した PyQt アプリケーションの制御フロー モデルの非常に短い概要
学んだ教訓:あなたが経験したかもしれない、学んだ痛ましい教訓、避けるべき罠、取り組むべき問題
幸せになる
解決
私は数か月前にこの道を歩もうとしましたが、努力する価値がないと判断しました。
Python のスタックレス バージョンに対して PyQt のバイナリ インストール (Windows 上) を実行することはできましたが、一部のファイルを手動で変更する必要があることがわかりました。エラー メッセージ (申し訳ありません、内容は忘れました) が表示されましたが、Google 検索で数年前の解決策が見つかりました。新しいコードには古い修正が含まれていなかったので、変更はそれほど難しくありませんでした。また、(記憶が正しければ) Python であったため、再コンパイルは必要ありませんでした。
しかし、それは私にとって契約を破るものでした。Qt のアップデートは PyQt のアップデートと同様に定期的に行われるため、コードを継続的に修正することは望ましくありませんでした。Stackless と PyQt は、徹底的にチェックアウトできるほど一緒に使用されていません。デバッグが難しい問題が発生するリスクがかなり高いことがわかりました。スタックレスの作者が PyPy に移行したことを考えると、これは特に当てはまります。事前にお詫びしておきます。作者がスタックレス Python での開発を停止したことについて見つけた参考文献と、修正しなければならなかったエラーの詳細があればよかったと思います。スタック オーバーフローで詳細を吐き出すとは予想していませんでした。
そこで、スタックレスではなくバニラの Python で PyQt を実行することにしました。
ところで、シグナル/スロットとスタックレス コードを混在させると、マルチスレッドの問題を解決するまったく異なる方法であるため、混乱を招くだろうとも思いました。
幸運を!
他のヒント
速度の最適化のためにこれらすべてに興味がある場合は、次のようにします。
チェックしてみてはいかがでしょうか 荷物を積んでいないツバメ ( ウィキペディアはこちら )。Google (YouTube は 100% Python であるため) は、速度を 5 ~ 10 倍向上させる (現在の仮想マシンよりも Java の速度にはるかに近づく) Python 用の JIT コンパイラの開発に取り組んでいます。最も良い点は、 既存のすべての Python コードで動作します つまり、他の Python 最適化プロジェクトに関連するすべての問題に悩まされる必要はありません。
低レベルでの最適化の必要性を保証するのに十分な大規模なプロジェクトを開発している場合は、通常の Python で開発し、Unladen Swallow が運用環境にリリースされたときに現在の VM から変更しても問題ないと思います。