これまでに書いたPyGTKのコードの中で、何か重い処理をさせているときに(メインループに処理が回らないことにより)GUIが固まってしまうのを避けるために幾つかの方法を使用してきた。ここではそれらをまとめておく。 スレッドを使用する マルチスレッド化して重い処理を別のスレッドで実行するようにする。子プロセスの実行など、同時に複数の処理を行いたいことがあるときに使えるが、以下のデメリットがある。どうしてもスレッドを使用しなくてはならない、という場合以外はおすすめできない。 スレッドを使用するための初期化処理としてgtk.gdk.threads_init()をgtk.main()よりも先に呼ぶ必要がある他、別スレッド側がGUI部品をいじるときにはメインスレッド側と同時にいじろうとして落ちる*1ということを避けるためにgtk.gdk.threads_enter()とgtk.gdk.threads_