Rimush
@Rimush

Разъясните почему так происходит при использовании потоков в Python?

Для ускорения загрузки страниц решил попробовать потоки, написал небольшую заготовку но возник вопрос.

Код:
#coding: UTF-8
from threading import Thread

thread_count = 7
mas = ['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m']
threads = []

def test(i):
    step = 0
    j = i
    while j <= len(mas):
        print(mas[j - 1])
        step += 1
        j = thread_count * step + i

for i in range(thread_count):
    threads.append(Thread(target=test, args=(i + 1,)))

for i in threads:
    i.start()

for i in threads:
    i.join()


Результат:
wqertyu






oipasdf






hgjklzx






vcbnm


Собственно почему он выводит в одну строку а потом делает несколько переносов строк?
И как этого избежать?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Потому что консоль - это разделяемый ресурс, конкурентный доступ к которому без синхронизации приводит к недетерминированному результату. Можно попробовать сбрасывать буфер потока вывода после каждого принта, но лучше просто не выводить одновременно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@potapovdmtriy
В print flush не поможет ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы