Как сделать, чтобы надпись о завершении работы программы выводилась только после окончания работы, а не в процессе?
for port in ports:
    threading.Thread(target=PortCheck, args = [port]).start()

for t in threading.enumerate():          # Получаем все потоки
    if t != threading.current_thread():  # Если это не текущий поток
        t.join()                         # Ожидаем его завершения

print('--------------------------------------')
input('Process ended. Press Enter.' + '\n')
так же atexit