Жахни мультипроцессингом по унынию.
Если пока сам не допираешь до таких задач, не рекомендую использовать asyncio, пока въедешь поседеешь.
Попробуй:
from multiprocessing import Pool
def get_dict(elem):
#тут классная логика get_dict
#можно даже сразу писать в csv
p = Pool(5) #Это "процессы" 10, 20, 1000000000000
p.map(get_dict, items) # map применит твою функцию get_dict к каждому элементу в списке items
По началу впечатляет, и выглядит понятно.
https://docs.python.org/2/library/multiprocessing.html