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