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條經驗 獲得超8個贊
您可以使用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
添加回答
舉報