применение 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()

→ Ссылка