Skip to content

Commit aa631bc

Browse files
committed
update test case
1 parent fd477ca commit aa631bc

1 file changed

Lines changed: 14 additions & 22 deletions

File tree

Lib/test/test_free_threading/test_dict.py

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44
import weakref
55

66
from ast import Or
7-
from collections import deque
87
from functools import partial
9-
from threading import Barrier, Event, Thread
8+
from threading import Barrier, Thread
109
from unittest import TestCase
1110

1211
try:
@@ -344,45 +343,38 @@ def test_racing_dict_update_and_method_lookup_with_inline_values(self):
344343
class Target:
345344
pass
346345

347-
def appender(obj: Target, start: Barrier, stop: Event) -> None:
346+
def appender(obj: Target, start: Barrier, iter_times: int) -> None:
348347
start.wait()
349348
index = 0
350-
while not stop.is_set():
349+
for _ in range(iter_times):
351350
setattr(obj, f"probe_{index}", index)
352351
index += 1
353352
time.sleep(0)
354353

355-
def replacer(obj: Target, start: Barrier, stop: Event,
356-
detached_dict_queue: deque[tuple[dict, frozenset]]) -> None:
354+
def replacer(obj: Target, start: Barrier, iter_times: int,
355+
detached_dict_queue: list[tuple[dict, frozenset]]) -> None:
357356
start.wait()
358-
while not stop.is_set():
357+
for _ in range(iter_times):
359358
dict_snapshot = obj.__dict__
360359
obj.__dict__ = {}
361360
current_keys = frozenset(dict_snapshot)
362361
detached_dict_queue.append((dict_snapshot, current_keys))
363362
time.sleep(0)
364363

365-
def start_race(start: Barrier, stop: Event, seconds: float) -> None:
366-
start.wait()
367-
time.sleep(seconds)
368-
stop.set()
369-
370-
def race(seconds: float, appender_threads: int,
364+
def race(iter_times: int, appender_threads: int,
371365
replacer_threads: int) -> None:
372366
obj = Target()
373367
setattr(obj, "origin", 0)
374368
_ = obj.__dict__ # Access __dict__ to ensure it's initialized
375369

376-
start = Barrier(appender_threads + replacer_threads + 1)
377-
stop = Event()
378-
detached_dict_queue: deque[tuple[dict, frozenset]] = deque()
379-
threads = [Thread(target=start_race, args=(start, stop, seconds),
380-
name="starter")]
370+
start = Barrier(appender_threads + replacer_threads)
371+
detached_dict_queue: list[tuple[dict, frozenset]] = []
372+
threads = []
381373
for _ in range(appender_threads):
382-
threads.append(Thread(target=appender, args=(obj, start, stop),
374+
threads.append(Thread(target=appender, args=(obj, start, iter_times),
383375
name="appender"))
384376
for _ in range(replacer_threads):
385-
threads.append(Thread(target=replacer, args=(obj, start, stop, detached_dict_queue),
377+
threads.append(Thread(target=replacer, args=(obj, start, iter_times, detached_dict_queue),
386378
name="replacer"))
387379

388380
with threading_helper.start_threads(threads):
@@ -393,10 +385,10 @@ def race(seconds: float, appender_threads: int,
393385
f"Detached dict keys {set(dict_snapshot)} " +
394386
f"do not match current keys {current_keys}")
395387

396-
WAIT_FOR_SECONDS = 5
388+
ITER_TIMES = 50_000
397389
APPENDER_THREADS = 8
398390
REPLACER_THREADS = 8
399-
race(WAIT_FOR_SECONDS, APPENDER_THREADS, REPLACER_THREADS)
391+
race(ITER_TIMES, APPENDER_THREADS, REPLACER_THREADS)
400392

401393
if __name__ == "__main__":
402394
unittest.main()

0 commit comments

Comments
 (0)