2 回答

TA贡献1817条经验 获得超6个赞
从random模块文档:
该模块提供的函数实际上是 random.Random 类的隐藏实例的绑定方法。您可以实例化自己的 Random 实例以获取不共享状态的生成器。
async def random_bytes():
generator = random.Random()
generator.seed(1234)
results = []
for _ in range(0, 128):
await asyncio.sleep(int(os.urandom(1)[0])/4096)
results.append(generator.getrandbits(8))
return results

TA贡献1725条经验 获得超7个赞
您可以使用random.getstateand random.setstate,确保在设置状态、生成随机数和获取状态之间,您不会屈服于另一个任务。
async def random_bytes():
random.seed(a=1234)
state = random.getstate()
results = []
for _ in range(0, 128):
await asyncio.sleep(int(os.urandom(1)[0])/4096)
random.setstate(state)
results.append(random.getrandbits(8))
state = random.getstate()
return results
添加回答
举报