为什么在Windows上使用python os.urandom生成1Gb很快,而在Linux上却很慢

yzxexxkh  于 2023-01-10  发布在  Windows
关注(0)|答案(1)|浏览(407)
import os
size = 1024 * 1024 * 1024 // 1GB
x = os.urandom(size)
print(len(x))

为什么同样的代码在不同的平台上会慢这么多?我怎样才能在Linux上提高速度?Windows上的速度非常快。

2cmtqfgy

2cmtqfgy1#

os.urandom()函数从操作系统提供的熵源生成随机字节。在Windows上,此熵源是CryptGenRandom函数,它是操作系统提供的加密安全随机数生成器(RNG)。
在Linux上,os.urandom()函数的熵源通常是/dev/urandom设备,这是一个特殊的文件,提供了对加密安全RNG的访问。这个RNG被设计得很快,但它仍然需要一些时间来生成大量的随机数据,特别是在系统没有足够的熵可用的情况下。
Windows上的代码可能更快的一个原因是CryptGenRandom函数是在硬件中实现的,这可能比Linux上使用的基于软件的RNG更快。
也可能有其他因素会影响Linux上代码的性能,比如系统的硬件和操作系统的配置。

相关问题