Python progress bar в GET-запросах
Мне нужно одновременно отправить 1000 GET-запросов с помощью multiprocessing и через библиотеку tqdm отслеживать уже отправленные запросы
Проблема состоит в том, что я работаю со списком и при использовании tqdm я совершаю лишние действия. Как правильно написать progres bar?
Когда использую tqdm в функции get, на консоль не выводится progress bar
Для проверки использую https://en.wikipedia.org/wiki/
Вот полный код:
from tqdm import tqdm
import multiprocessing as mp
import requests
def get(url):
response = requests.get(url)
return response
if __name__ == '__main__':
adress = input('Введите адрес: ')
urls = [f'{adress}{i}' for i in range(1000)]
with mp.Pool(mp.cpu_count()) as pool:
res = pool.map(get, urls)
Ответы (1 шт):
Вот вам пример кода, как можно сделать, для примера я использовал сайт, который выдаёт результаты с заданной задержкой. И ещё я использовал imap вместо map, в этом случае результаты приходят суммарно быстрее, но не обязательно в том порядке, в котором были запрошены.
from tqdm import tqdm
import multiprocessing as mp
import requests
def get(url):
response = requests.get(url)
return response.json()['url']
if __name__ == '__main__':
adress = 'http://httpbin.org/delay/'
urls = [f'{adress}{i}' for i in range(1,11)]
results = []
with mp.Pool(mp.cpu_count()) as pool:
for res in tqdm(pool.imap(get, urls), total=len(urls)):
results.append(res)
print(results)