future = Future() # создаем Future-объект в состоянии pending
print(future.result()) # Просим показать result(), БЛОКИРУЯ
future.set_result("Hello from the future!") # Задаем result
result() будет ждать, пока результат не будет установлен, но set_result() никогда не будет вызван, так как выполнение программы остановилось на предыдущей строке.С такой ситуацией можно справиться, если добавить аргумент-таймаут:
future.result(timeout=1)