В общем, изрыв пол инета по своему вопросу, и вашим наставлениям -
нашел и подогнал под себя следующий пример, который хоть и делает примерно то, что нужно, но мне не очень нравится. По сути и есть второй поток который выводит прогресс и ждет себе сигнала завершения, но как-то не изящно совсем:
import sys
import time
import threading
class progress_bar_loading(threading.Thread):
def run(self):
start = time.time()
global stop
global kill
print('Loading.... '),
sys.stdout.flush()
i = 0
while stop != True:
sys.stdout.write("\r "+'Loading: '+'\b*'*(i%4)+'\t\t\t\t\t{0}'.ljust(0).format(time.time() - start))
sys.stdout.flush()
time.sleep(0.5)
i+=1
print '\b\b Done!'
kill = False
stop = False
try:
#anything you want to run.
p = progress_bar_loading()
p.start()
time.sleep(8)
stop = True
time.sleep(1)
print
p2 = progress_bar_loading()
stop = False
p2.start()
time.sleep(5)
stop = True
except KeyboardInterrupt or EOFError:
stop = True