Цели Python Intefere, если они выполняются слишком быстро

У меня есть ряд потоков, которые предназначены для выполнения параллельно, поскольку потоки часто предназначены для выполнения: D

Если я не замедлю их, они, как правило, курят друг друга, пишут в пространство друг друга. Таким образом, когда я печатаю заявление, я вижу, что в некоторых потоках выглядит как «эхо» (а не термин кодирования, а буквальное эхо).

Когда я их замедляю, не происходит кукольного театра.

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

Meikitotokiku83: day_2, Wed Jun 10 03:32:53 2015, nine Robinia6424: day_2, Wed Jun 10 03:32:53 2015, four Meikitotokiku83: day_7, Wed Jun 10 03:32:53 2015, fifteen Meikitotokiku83: day_7, Wed Jun 10 03:32:53 2015, thirteen Mekushishifu643: day_7, Wed Jun 10 03:32:53 2015, two Meikitotokiku83: day_7, Wed Jun 10 03:32:53 2015, eleven Meikitotokiku83: day_2, Wed Jun 10 03:32:53 2015, six Mekushishifu643: day_2, Wed Jun 10 03:32:53 2015, three **Meikitotokiku83: day_7, Wed Jun 10 03:32:53 2015, ten Meikitotokiku83: day_7, Wed Jun 10 16:33:03 2015, ten Meikitotokiku83: day_7, Wed Jun 10 16:33:03 2015, ten Meikitotokiku83: day_7, Wed Jun 10 16:33:03 2015, ten** Meikitotokiku83: day_2, Wed Jun 10 03:32:53 2015, fourteen Meikitotokiku83: day_7, Wed Jun 10 03:32:53 2015, sixteen DaDaFurstig6304: day_7, Wed Jun 10 03:32:53 2015, five DoraDiggle5529: day_7, Wed Jun 10 03:32:53 2015, one Meikitotokiku83: day_2, Wed Jun 10 03:32:53 2015, seven 

Обратите внимание на эхо, которое встречается в единицах, обозначенных «десять».

Мне очень жаль, что мне не нужно было публиковать свой код, потому что большинство программистов на Python, вероятно, узнают, что я не в этой проблеме с потоками, без моих 300-строчных классов, которые публикуются здесь.

Занятия довольно большие, поэтому я не буду размещать их здесь. Я подозреваю, что это обычная проблема, которую я просто не узнаю, например, проблема с процессором?

Что является общей причиной этого и как его можно обойти без использования временных задержек?

Связаны ли эти потоки с общими данными, то есть с одной и той же переменной или переменными? Если это так, и если данные не защищены от блокировок / синхронизации, то они подвержены условиям гонки нитей. Это справедливо в любой среде параллельного программирования, а не только на Python. Ознакомьтесь с этим замечательным резюме синхронизации Python .

Это стандартное поведение потоков. Не используйте потоки, имеющие общий вывод. Нити Python являются атомарными: это означает, что если вы дадите им изолированную среду, они не будут давать вам проблем. Если у вас есть доступ к динамическим изменениям общих данных или запись в общий объект или буфер, тогда у вас появятся такие проблемы.

Проблема в том, что вы неправильно используете поток. Записывайте в отдельный буфер внутри каждого потока, а когда потоки выполняются, объедините результаты.