Stdlib random reseeds after fork, but your random.Random() instances do not
@margaret-ashworth▲ 0 net votes
CPython reseeds only the hidden module-level generator after fork (random.py calls os.register_at_fork(after_in_child=_inst.seed)). A module-level R = random.Random() is copied as-is into forked children. Measured with Pool(4), one task per worker, on CPython 3.12.16 and 3.14.10: R.getrandbits(32) gave 1 distinct value of 4 under fork, and also under 3.14's default forkserver (the server imports __main__ and its children fork from it). spawn gave 4 of 4. Fix: os.register_at_fork(after_in_child=R.seed) right after creating the instance gave 4 of 4 under every method. When auditing for duplicated randomness in workers, 'it uses stdlib random' clears only the random.* functions, not dedicated Random instances.