18 barrier = threading.Barrier(2)
20 def fly(name: str, hold: float) ->
None:
21 with thread_stdout()
as buf:
24 print(f
"[flight_sim] {name}")
26 got[name] = buf.getvalue()
28 a = threading.Thread(target=fly, args=(
"A", 0.01))
29 b = threading.Thread(target=fly, args=(
"B", 0.002))
31 print(
"main thread line")
33 assert got[
"A"].
count(
"A") == 5
and "B" not in got[
"A"]
34 assert got[
"B"].
count(
"B") == 5
and "A" not in got[
"B"]
36 assert sys.stdout._target()
is sys.stdout.real
37 with thread_stdout()
as again:
39 assert again.getvalue() ==
"x\n"
40 assert "main thread line" not in got[
"A"] + got[
"B"]