【发布时间】:2023-01-09 19:47:11
【问题描述】:
import os
size = 1024 * 1024 * 1024 // 1GB
x = os.urandom(size)
print(len(x))
为什么相同的代码在不同的平台上会慢很多?我怎样才能提高 linux 上的速度。 懒得在linux上测试速度慢了, Windows 上的速度非常快。
【问题讨论】:
标签: python linux windows operating-system
import os
size = 1024 * 1024 * 1024 // 1GB
x = os.urandom(size)
print(len(x))
为什么相同的代码在不同的平台上会慢很多?我怎样才能提高 linux 上的速度。 懒得在linux上测试速度慢了, Windows 上的速度非常快。
【问题讨论】:
标签: python linux windows operating-system
os.urandom() 函数从操作系统提供的熵源生成随机字节。在 Windows 上,此熵源是 CryptGenRandom 函数,它是操作系统提供的加密安全随机数生成器 (RNG)。
在 Linux 上,os.urandom() 函数的熵源通常是 /dev/urandom 设备,这是一个特殊文件,可提供对加密安全 RNG 的访问。这个 RNG 设计得很快,但它仍然需要一些时间来生成大量随机数据,尤其是在系统没有足够的可用熵的情况下。
代码在 Windows 上可能更快的原因之一是因为 CryptGenRandom 函数是在硬件中实现的,这可能比基于软件的 RNG(如 Linux 上使用的 RNG)更快。
也可能有其他因素会影响代码在 Linux 上的性能,例如系统的硬件和操作系统的配置。
【讨论】: