マルチスレッド化(threadモジュール)

GUI画面のボタンを押すことで処理が始まるようにしたのだが、その処理が重く長時間かかるような場合には、画面がフリーズした状態になってしまう。それを解消するためのマルチスレッド化は以外と簡単(のように見える)。

デモの中のThreads.pyにあるように、thread.start_new_threadで新たなスレッドをスタートする。
こうすれば、重い処理の実行中も画面がフリーズすることはなくなる。

import thread

class hoge:
    ...
    def Start(self):
        thread.start_new_thread(self.Run, ())

    def Run(self):
        # 重い処理

調子に乗って重い処理をすべてマルチスレッドにしたら、ビープ音が鳴るようになってしまった。処理は行われているようではあるが、マウスでポインタを動かせなくなり、ピ、ピ、ピーと鳴っている。
しばらくすると、処理が終わり、すべて元に戻る。
やはり正常に動作しているとは言えないか...。