Почему при многопоточности print иногда работает неправильно Python?

С помощью ThreadPoolExecutor я в нескольких потоках ищу свободные порты, сканируя UPD, и вывожу их на консоль, как найду. Но при выводе почему-то некоторые появляются в одной строке. Как это можно исправить?
Пример:

UPD 993
UPD 992
UPD 994UPD  995

UPD 996
UPD 997
UPD 998UPD  999

Может как-то блокировать print?
threading.Lock() и multiprocessing.Lock() не помогают.


Ответы (1 шт):

Автор решения: whatgenius

Действительно, как написал CrazyElf, лучше (в моём случае) не выводить результат сразу на консоль, а добавлять в лист. В листе они, конечно, тоже будут расположены не по порядку, но его можно отсортировать (я так и сделал) и обойтись без лока.

→ Ссылка