ThreadPool. Не стал придумывать функцию сложнее, просто для наглядности вывожу.
from multiprocessing.dummy import Pool as ThreadPool
import os
data = [i for i in range(100)]
with ThreadPool(os.cpu_count() - 1) as tp:
tp.map(lambda x: print(x**2), data)