import os size = 1024 * 1024 * 1024 // 1GB x = os.urandom(size) print(len(x))
为什么同样的代码在不同的平台上会慢这么多?我怎样才能在Linux上提高速度?Windows上的速度非常快。
2cmtqfgy1#
os.urandom()函数从操作系统提供的熵源生成随机字节。在Windows上,此熵源是CryptGenRandom函数,它是操作系统提供的加密安全随机数生成器(RNG)。在Linux上,os.urandom()函数的熵源通常是/dev/urandom设备,这是一个特殊的文件,提供了对加密安全RNG的访问。这个RNG被设计得很快,但它仍然需要一些时间来生成大量的随机数据,特别是在系统没有足够的熵可用的情况下。Windows上的代码可能更快的一个原因是CryptGenRandom函数是在硬件中实现的,这可能比Linux上使用的基于软件的RNG更快。也可能有其他因素会影响Linux上代码的性能,比如系统的硬件和操作系统的配置。
1条答案
按热度按时间2cmtqfgy1#
os.urandom()函数从操作系统提供的熵源生成随机字节。在Windows上,此熵源是CryptGenRandom函数,它是操作系统提供的加密安全随机数生成器(RNG)。
在Linux上,os.urandom()函数的熵源通常是/dev/urandom设备,这是一个特殊的文件,提供了对加密安全RNG的访问。这个RNG被设计得很快,但它仍然需要一些时间来生成大量的随机数据,特别是在系统没有足够的熵可用的情况下。
Windows上的代码可能更快的一个原因是CryptGenRandom函数是在硬件中实现的,这可能比Linux上使用的基于软件的RNG更快。
也可能有其他因素会影响Linux上代码的性能,比如系统的硬件和操作系统的配置。