« Pubmedが遅いと思ったらEuropePMCというミラーもあります。 | トップページ | py2exeでwxPythonアプリをカッコ良い見た目でパッケージ化。 »

2013年10月10日 (木)

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アプリをカッコ良い見た目でパッケージ化。 »

日記・コラム・つぶやき」カテゴリの記事

Python」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: wxpythonで長いタスク中でもレスポンシブなGUI。:

« Pubmedが遅いと思ったらEuropePMCというミラーもあります。 | トップページ | py2exeでwxPythonアプリをカッコ良い見た目でパッケージ化。 »

やっつけタイムライン

オススメたち

  • Librem One

    LibremOneでプライバシーを取り戻せ!VPN、eメール、チャット、ソーシャルメディア詰め合わせサービス

    follow us in feedly

    かなり更新が不定期なため、RSSリーダーをオススメします。RSSを表示

    超安定なLinux Mintを応援中



    超かっこいいジャズピアノ岩瀬章光

    Jenny Mayhem超おすすめ

    今読んでいる

2019年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

はてブ

無料ブログはココログ