Многопоточный цикл времени до тех пор, пока для любого из потоков не будет выполнено определенное условие

#python-3.x #multithreading

Вопрос:

У меня есть API, который возвращает только 100 образцов с каждой страницы pr. запрос. К счастью, он также возвращается, если есть следующая страница. Прямо сейчас мой код выглядит так

 import requests

next_page = True
i = 0
usr = "my_user"
pwd = "AveryStrongPasswordIndeed"
data_total = pd.DataFrame()

while next_page:
    i =1
    url = f"https://some_api.com/users?page={i}"
    r = requests.get(url,auth=(usr,pwd))
    data = pd.DataFrame(r.json())

    next_page = data["next_page"].iloc[0] #Check if next-page exists
    pd.concat((data_total,data))
 

как вы можете видеть, циклы продолжаются до next_page тех пор, пока не будут логически ложными.

Если бы я знал точное количество страниц, я мог бы прочесть его без проблем, но с такой настройкой я изо всех сил пытаюсь понять, как с этим справиться (и нет никакого способа определить количество страниц).

Я думал о создании партий, скажем, по 20 потоков на страницу 1..20 . Если все они есть next_page=True , сделайте все это снова для 21..40 и повторите. Я сомневаюсь, что это самый эффективный способ сделать это