wxpythonで長いタスク中でもレスポンシブなGUI。
いままでwxpythonからながーいタスクを始めたときはメインのFrame内のメソッドとして処理ループをおいて、そこでwx.Yield()を使うので済むときは済ませて、そうじゃない場合wx.lib.delayedresultを使っていたんだけども、マルチコアを有効に使いたいと思ったら標準ライブラリのthreadingモジュールを使うケースが結構多いみたいなので、その場合のそのひな形として参考になる例がwxpythonのWikiサイトの記事(LongRunningTasks)を見つけたので忘備録にメモ。なにげに記事にした記憶というのは残っているもので自分のブログを検索したり良くしているのでソーシャルブックマークよりも使えてたりする。
今回、別ファイルに関数としてすでに作ってある処理をwx側から呼び出して、結果を待っている状況で、できるだけこの関数をいじらずにGUIがリフレッシュされるようにしたかったんだけど、この場合Yieldが使えるかどうかわからなかったのでmultiprocessingモジュールつかってみたり色々ためしたもののpy2exeでパッケージ化するとどうも変なことが起こったりするので、結局wx.Yield()をループの中に入れたらそれであっさりうまくいってしまった。パフォーマンス落ちるかもだけどwx.Yield()が一番簡単でいいな。体感はしなかったがwx.YieldIfNeeded()とすれば多少パフォーマンスもマシになるかもしれない。というわけでthreadingは今回は道半ばでパス。
« Pubmedが遅いと思ったらEuropePMCというミラーもあります。 | トップページ | py2exeでwxPythonアプリをカッコ良い見た目でパッケージ化。 »
「日記・コラム・つぶやき」カテゴリの記事
- だらだら日記だ(2023.11.26)
- Letter from home、September15thなどなどのピアノアレンジが素晴らしい件(2018.08.03)
- 2日半のfasting(断食)で劇的おなら予防。(2017.12.18)
「Python」カテゴリの記事
- Noteの記事をPythonでバックアップしといた。(2021.05.05)
- JupyterLabでも好きな外部エディターを使いたい!(2018.05.02)
- ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。(2018.05.02)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)
« Pubmedが遅いと思ったらEuropePMCというミラーもあります。 | トップページ | py2exeでwxPythonアプリをカッコ良い見た目でパッケージ化。 »
コメント