Статус библиотеки запросов Python 3

#python #python-3.x #for-loop #python-requests #tqdm

#python #python-3.x #for-цикл #python-запросы #tqdm

Вопрос:

Короткая версия: я рассматриваю, как реализовать индикатор выполнения в программе Python3 в виде вывода на печать или std, поскольку моя программа запускает 12 тыс. запросов HEAD с библиотекой запросов python в списке доменов. Я хочу знать, как далеко это продвинулось.

Подробные сведения

У меня есть скрипт для получения текстового файла, из sys.argv которого есть список доменных имен, затем с помощью запросов python можно получить статус заголовка каждого из них, при этом очередь и поток выполняются довольно быстро. Но если у вас есть 12 000 доменов для запроса, это может занять некоторое время.

Я хочу добавить статус всего файла в качестве индикатора выполнения. Я добился некоторого успеха, используя приведенное ниже из другого сообщения здесь, в stack.

     for line in (url):
        global progress
        progress = progress   len(line)
        progress_percent = (1.0*progress)/fileSize
        print("Progress :", progress_percent)
  

Но у меня есть этот фрагмент кода внутри моей функции, который также ставит в очередь каждый URL-адрес для потока и очереди, поэтому я все равно получаю новую строку для каждой строки, и это больше, чем просто индикатор выполнения, который достигает 100%.

Я пробовал использовать tqdm, но я не могу заставить его выполнять правильные вычисления, либо он вообще не выводит выходные данные (?), Либо он присваивает статус каждому URL-адресу в процентах от общего числа.

Псевдокод остальной части моей программы:

 sys.argv[1]  # get the file  
work_function() # a while true loop that gets a URL from a queue, inside this is the `for line in URL` function    
main() # makes all the head requests, gets response strings writes to different text files.  
for i in range(x): # small threading loop for the `work_function`.  
for loop  # that makes the queue of URLs from the sys.argv file in.
  

Мои лучшие усилия до сих пор были такими, любые предложения по улучшению приветствуются!

Прогресс: 0,71111111111111111
Прогресс: 0,73333333333333333
Прогресс: 0,7555555555555555

Комментарии:

1. В чем конкретная проблема? Чтобы вычислить прогресс, печатать его реже, показывать его обновление в одной строке вместо одной для каждой печати, что-то еще?

2. Чтобы поместить индикатор выполнения для того, сколько запросов было сделано из общего числа из данного файла в одной строке, да.

3. Попробуйте print("Progress :", progress_percent, end="r") . Затем следующая печать начнется с той же строки, что и эта. Имейте в виду, что если в следующей печати меньше символов, символы из предыдущей печати остаются на экране.

4. Это значительное улучшение по сравнению с инструкцией print, которая у меня была, намного чище.