Загрузка данных


import asyncio
import random

WORKERS_COUNT = 3


async def script(urls_list):
    iter = 0

    async def worker(worker_id):
        nonlocal iter

        while iter < len(urls_list):
            current_iter = iter
            iter += 1
            await asyncio.sleep(random.uniform(0, 1))
            
            print(
                f"worker_id={worker_id}, "
                f"iter={current_iter}, "
                f"url={urls_list[current_iter]}"
            )

    await asyncio.gather(
        *(worker(worker_id) for worker_id in range(WORKERS_COUNT))
    )

asyncio.run(script([f"url-{i}" for i in range(10)]))



# worker_id=2, iter=2, url=url-2
# worker_id=0, iter=0, url=url-0
# worker_id=1, iter=1, url=url-1
# worker_id=2, iter=3, url=url-3
# worker_id=2, iter=6, url=url-6
# worker_id=2, iter=7, url=url-7
# worker_id=1, iter=5, url=url-5
# worker_id=2, iter=8, url=url-8
# worker_id=0, iter=4, url=url-4
# worker_id=1, iter=9, url=url-9