Запутанный вывод о многопоточном программировании

Я написал эту простую программу, которая создает поток и запускает метод:

import threading

class MyThread(threading.Thread):

    def __init__(self, thread_name, counter):
        threading.Thread.__init__(self)
        self.thread_name = thread_name
        self.counter = counter

    def printIteration(self, counter):
        it = 1

        while counter > 0:
            print "\n"+self.thread_name+": Iteration", it,"\n"
            it += 1
            counter -= 1

    def run(self):
        print "\n"+self.thread_name+" started...\n"
        self.printIteration(self.counter)
        exit()


my_thread1 = MyThread("Thread1", 2)
my_thread2 = MyThread("Thread2", 4)

my_thread1.start()
my_thread2.start()

Но когда я запускаю его, вывод выглядит примерно так:

Thread1 started...
Thread2 started...

Thread1: Iteration
Thread2: Iteration 1 1
.
.
.

Почему? Это нормально или я что-то забыл?


person g_rmz    schedule 02.12.2013    source источник
comment
Для многопоточного приложения характерно, что выходные данные могут чередоваться. Вы можете проверить, например. stackoverflow.com/questions/10928115/ подробности.   -  person Danstahr    schedule 02.12.2013
comment
Благодарю вас! Но теперь у меня другой вопрос: есть ли модуль Python, который может помочь мне реорганизовать вывод?   -  person g_rmz    schedule 02.12.2013
comment
Спасибо, я попробую это... я думаю, это должно решить проблему.   -  person g_rmz    schedule 02.12.2013