Ткинтер и нить. вне стекового пространства (бесконечный цикл?)

Я экспериментирую с Tkinter и механизмом потоков. Может кто-нибудь объяснить, почему это вызывает исключение:

<class '_tkinter.TclError'> out of stack space (infinite loop?)

и как я могу решить это? Ниже приведен код. Кстати, я знаю, что некоторые люди предлагают использовать модуль потоков вместо потоков, но сейчас я хотел бы использовать модуль потоков, который проще представить себе механизм.

from Tkinter import *
import thread
import time

def main_thread(master):

    try:
        frame = Frame(master)
        frame.pack(side='bottom')
        scrollbar = Scrollbar(master)
        scrollbar.pack(side='right',fill='y')

        t = "Title"
        title = StringVar()
        title.set(t)
        ttl = Label(master, textvariable=title, font=("Helvetica", 18))
        ttl.pack(side='top')
        cont = Text(master, font=("Helvetica",14), yscrollcommand=scrollbar.set)
        cont.pack(side='bottom')
        button = Button(frame,text="Exit", command=root.destroy)
        button.pack(side='bottom')

        n = 0
        while 1:
            n += 1
            cont.insert('end', str(n)+"\n")
            time.sleep(1)

    except Exception as e:
        print type(e), e

if __name__ == '__main__':

    root = Tk()
    root.title("My counting application")
    thread.start_new_thread(main_thread, (root,)) # FIXME: out of stack space (infinite loop?)
    root.mainloop()

Спасибо лука

РЕДАКТИРОВАТЬ

Я решил заменить

    n = 0
    while 1:
        n += 1
        cont.insert('end', str(n)+"\n")
        time.sleep(1)

с

    n = 0
    def do_every_second(n):
        cont.insert("end", str(n) + "\n")
        n += 1
        master.after(1000, do_every_second, n)
    do_every_second(n)

и звонит

main_thread(root)

вместо

thread.start_new_thread(main_thread, (root,))

Ответы на вопрос(2)

Ваш ответ на вопрос