【问题标题】:Why is it fast to generate 1Gb using python os.urandom on Windows, but very slow on linux为什么在 Windows 上使用 python os.urandom 生成 1Gb 很快,但在 linux 上却很慢
【发布时间】: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


    【解决方案1】:

    os.urandom() 函数从操作系统提供的熵源生成随机字节。在 Windows 上,此熵源是 CryptGenRandom 函数,它是操作系统提供的加密安全随机数生成器 (RNG)。

    在 Linux 上,os.urandom() 函数的熵源通常是 /dev/urandom 设备,这是一个特殊文件,可提供对加密安全 RNG 的访问。这个 RNG 设计得很快,但它仍然需要一些时间来生成大量随机数据,尤其是在系统没有足够的可用熵的情况下。

    代码在 Windows 上可能更快的原因之一是因为 CryptGenRandom 函数是在硬件中实现的,这可能比基于软件的 RNG(如 Linux 上使用的 RNG)更快。

    也可能有其他因素会影响代码在 Linux 上的性能,例如系统的硬件和操作系统的配置。

    【讨论】:

      猜你喜欢
      • 2019-07-04
      • 2018-08-11
      • 1970-01-01
      • 2014-10-16
      • 2012-07-12
      • 2021-08-19
      • 2020-10-21
      • 2016-12-30
      • 1970-01-01
      相关资源
      最近更新 更多