« 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」カテゴリの記事

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

コメント

コメントを書く

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

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

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1169291/53559225

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

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

広告欄


やっつけタイムライン

広告欄

はてブ

人目の訪問です。

  • follow us in feedly

    かなり更新が不定期なため、RSSリーダーをオススメします。現在Feedlyに122人登録頂いています。多謝!RSSを表示

    ブログランキング用 にほんブログ村 IT技術ブログ Pythonへ ブログランキングならblogram






    Jenny Mayhem
2017年7月
            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 31          

IT技術注目記事

無料ブログはココログ