применение requests и threading (python)
Я пишу программу, которая возвращает мне случайный адрес в заданном округе. Мне бы хотелось ускорить ее с помощью модуля threading. Я попробовал сделать это так:
from threading import Thread
import random
import requests
maxx = 49
minx = 32.5
maxy = -69
miny = -124
key = "<key>"
geo_base = "https://maps.googleapis.com/maps/api/geocode/json?address="
ocean_id = "ChIJ_7hu48qBWgYRT1MQ81ciNKY"
def get_random_adress():
x = random.uniform(minx, maxx)
y = random.uniform(miny, maxy)
res = requests.get(geo_base + str(x) + "," + str(y) + key)
adress = ""
if res.json() != {'results': [], 'status': 'ZERO_RESULTS'} and res.json()['results'][0]['place_id'] != ocean_id:
components = res.json()['results'][0]['address_components']
for component in components:
adress += component['short_name'] + " "
return adress
else:
return 0
def main():
while True:
print (get_random_adress())
threads = []
for i in range(10):
t = Thread(target=main)
threads.append(t)
threads[i].run()
К сожалению, это код не ускорило. Как я понимаю, просто так модуль requests не работает в нескольких потоках одновременно. Как я могу это исправить?
Ответы (1 шт):
Автор решения: Maxim Chyorny
→ Ссылка
Забудьте о том, что я написал ранее, для использования потоков и многопоточности и запуска сразу нескольких разных функций или одной и той же - не обязательно использовать асинхронность.
Вы просто неправильно запускали поток.
Решение: Вместо
threads[i].run()в цикле написатьthreads[i].start()