Threading не очень хороший выбор в pygtk.Просто проверьте основной цикл на наличие событий в вашем дорогостоящем цикле, и позвольте ему делать свое дело:
while my_operation_running:
<my code>
while gtk.events_pending():
gtk.main_iteration()
или настройте свою дорогую операцию, чтобы ее можно было выполнять пошагово, используя
glib.idle_add(function)
Каждый раз, когда главному циклу нечем заняться, он будет вызывать «функцию», просто убедитесь, что функция отслеживает ее продвижение и выполняет только одну итерацию в каждом вызове.