KogromЭлегантное решение потребует другого подхода и скорее всего будет конфликтовать с вашей идеей о прозрачности.
Похоже, что так. И с ходу я не вижу элегантного решения этой проблемы, ибо запускающая функция не должна дожидаться ответа. Можно передавать объект среди параметров, который будет получать результат. Я пока делаю так. Но это не очень красиво.
В multiprocessing.Pool, например, для возврата результатов используются коллбэки. Но это же не то, что вы хотите, правда?