import asyncio
import time
from time import sleep
async def source_scraper(index):
# sleep(1)
await asyncio.sleep(1)
# print(index)
async def source_scraper_head_sub():
loop = asyncio.get_event_loop()
links = [i for i in range(10_000)]
start = time.time()
tasks = [loop.run_in_executor(None, source_scraper, index) for index in enumerate(links)]
await asyncio.gather(*tasks)
print("time taken =", time.time() - start)
def runner():
asyncio.run(source_scraper_head_sub())
runner()
Output:
time taken = 0.4620068073272705
C:\Apps\Python\lib\asyncio\base_events.py:1897: RuntimeWarning: coroutine 'source_scraper' was never awaited
handle = None # Needed to break cycles when an exception occurs.
RuntimeWarning: Enable tracemalloc to get the object allocation traceback