Если возможно запустить ваше решение параллельно, тогда я думаю Joblib - жизнеспособное решение.
Я сам попробовал, и мне это очень нравится. Количество изменений, необходимых для того, чтобы это работало, очень мало.
Вот пример того, как это работает:
from joblib import Parallel, delayed
numbers = list(range(10))
def square(x):
return x ** 2
result = Parallel(n_jobs=3)(delayed(square)(number) for number in numbers)
print(result) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Если это решение не работает для вас, пожалуйста, поделитесь еще подробности о ваших проблемах.