Почему при многопоточности 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, лучше (в моём случае) не выводить результат сразу на консоль, а добавлять в лист. В листе они, конечно, тоже будут расположены не по порядку, но его можно отсортировать (я так и сделал) и обойтись без лока.