1

show_image(...)画像が(たとえば)NumPy配列として指定される、かなり単純な画像ビューアを起動するPythonでアクセス可能な関数が欲しいです。重要なのは、この関数がブロックされるのではなく、ウィンドウの対話性を維持しながらスクリプトが実行を継続することです。

巨大な設計上の欠陥と、グローバル インタープリター ロックとして知られる厄介な問題が、メイン スレッドで Python コードと並行して実行される Python ベースの GUI を妨害することを認識しています。 GIL を解放し、C/C++ ですべてを行うスレッド。

私はそのようなものを Cython (または手書きの C 拡張モジュール) でラップすることに問題はありませんが、適切な GUI ソリューションを探しています。クロスプラットフォームであり、Cython 拡張機能と組み合わせて簡単に構築できる必要があります (後者は Qt/qmake/etc. を除外しているようです)。

重要なのは、この方法でオンデマンドで複数のウィンドウを起動できるようにしたいということです。ほとんどの GUI ツールキットには、メイン スレッドプログラムのrun()最後に呼び出される必要があるような関数がいくつかあるようです。毎回別の GUI イベント ループを起動できると思いますが、それは大惨事のレシピのように思えます (思い出すと、少なくとも GTK+ では明示的にサポートされていません)。main()

fork()また、 「する」ことはオプションではないと言います。

4

1 に答える 1

0

個人的にはos.system("xv foo.png &")、または小さな画像ビューアを使用しています。詳細によってはg = os.popen("xv - &", "w")、画像データをファイルに書き込むこともできますg。ここでも詳細に応じて、プログラムを Web サーバー (たとえば Twisted を使用した数十行のコード) にして、そこから画像を提供し、Web ブラウザーで表示することがあります。私のポイントは、GUI やマルチスレッドはまったく必要ないということです。

于 2013-01-21T20:35:38.960 に答える