Я пишу эту программу, которая одновременно загружает несколько файлов с использованием потоков и сообщает о прогрессе для каждого файла на экране. Я использую один поток, чтобы загрузить каждый файл. Это не проблема:Python Threading: многострочный отчет о проделанной работе
for file_url, filename in zip(file_urls, filenames):
th = Thread(target=download_file, args=(file_url, filename))
threads.append(th)
th.start()
for thread in threads:
thread.join()
Проблема заключается в том, я не знаю, в любом случае, что я могу напечатать каждый отчет о ходе файла на экран, который будет выглядеть следующим образом:
"Downloading 'example1.zip': 54366 bytes of 2240799 70.7%"
"Downloading 'example2.zip': 31712 bytes of 1924639 64.7%"
"Downloading 'example3.zip': 21712 bytes of 3224979 34.7%"
Следующий фрагмент кода для один доклад о ходе работы линии:
def chunk_report(bytes_so_far, total_size, filename):
percent = float(bytes_so_far)/total_size
percent = round(percent * 100, 2)
print "Downloading '{0}': {1} of {2} {3:3.2g}% \r".format(filename,
bytes_so_far, total_size, percent),
и результат будет выглядеть следующим образом:
"Downloading 'example2.zip': 31712 bytes of 1924639 64.7%"
каждый раз, когда поток вызывает эту функцию, он обновляет экран для файла, который загружается нитью.
Итак, вопрос в том, как напечатать многострочный отчет о ходе работы, подобный тому, который я проиллюстрировал выше в python?
Заранее спасибо.