def run_expensive(): q = Queue() t = Thread(target=expensive_operation, args=(q,), daemon=True) t.start() t.result = q return t.result.get()