Complete a future with a deterministic result and inspect its done state.

future result A `concurrent.futures.Future` holds a result once `set_result` runs, so reading `done` and `result` reports the settled state without waiting on a worker.

Future State Coordination Report

seed
future_state_coordination_report.py
Replay: real traced execution (multi-file project)
from concurrent.futures import Future


seed = 3
task = Future()
task.set_result(seed * 2 + 1)

done = task.done()
result = task.result()
status = "small" if result <= 3 else "mid" if result <= 9 else "large"

print("seed=" + str(seed) + " done=" + str(done) + " result=" + str(result) + " status=" + status)
from concurrent.futures import Future


seed = 1
task = Future()
task.set_result(seed * 2 + 1)

done = task.done()
result = task.result()
status = "small" if result <= 3 else "mid" if result <= 9 else "large"

print("seed=" + str(seed) + " done=" + str(done) + " result=" + str(result) + " status=" + status)
from concurrent.futures import Future


seed = 6
task = Future()
task.set_result(seed * 2 + 1)

done = task.done()
result = task.result()
status = "small" if result <= 3 else "mid" if result <= 9 else "large"

print("seed=" + str(seed) + " done=" + str(done) + " result=" + str(result) + " status=" + status)
  1. seed ← 3, task ← <Future at ⟨addr A⟩ state=pending>, done ← True

    4seed→ 3 = 3  #@seed=1, 65task→ <Future at ⟨addr A⟩ state=pending> = Future()6task→ <Future at ⟨addr A⟩ state=finished returned int>.set_result(seed3 * 2 + 1)78done→ True = task<Future at ⟨addr A⟩ state=finished returned int>.done()9result→ 7 = task<Future at ⟨addr A⟩ state=finished returned int>.result()10status→ mid = "small" if result7 <= 3 else "mid" if result <= 9 else "large"1112print("seed=" + str(seed3) + " done=" + str(doneTrue) + " result=" + str(result7) + " status=" + statusmid)
    outputseed=3 done=True result=7 status=mid
  1. seed ← 1, task ← <Future at ⟨addr A⟩ state=pending>, done ← True

    4seed→ 1 = 15task→ <Future at ⟨addr A⟩ state=pending> = Future()6task→ <Future at ⟨addr A⟩ state=finished returned int>.set_result(seed1 * 2 + 1)78done→ True = task<Future at ⟨addr A⟩ state=finished returned int>.done()9result→ 3 = task<Future at ⟨addr A⟩ state=finished returned int>.result()10status→ small = "small" if result3 <= 3 else "mid" if result <= 9 else "large"1112print("seed=" + str(seed1) + " done=" + str(doneTrue) + " result=" + str(result3) + " status=" + statussmall)
    outputseed=1 done=True result=3 status=small
  1. seed ← 6, task ← <Future at ⟨addr A⟩ state=pending>, done ← True

    4seed→ 6 = 65task→ <Future at ⟨addr A⟩ state=pending> = Future()6task→ <Future at ⟨addr A⟩ state=finished returned int>.set_result(seed6 * 2 + 1)78done→ True = task<Future at ⟨addr A⟩ state=finished returned int>.done()9result→ 13 = task<Future at ⟨addr A⟩ state=finished returned int>.result()10status→ large = "small" if result13 <= 3 else "mid" if result <= 9 else "large"1112print("seed=" + str(seed6) + " done=" + str(doneTrue) + " result=" + str(result13) + " status=" + statuslarge)
    outputseed=6 done=True result=13 status=large