2016-11-23 47 views
0

当我使用readline函数时发生了什么?
readline函数:引擎盖下,python

  1. 的功能读出从HDD一行在RAM的缓冲器。
  2. 该函数从HDD读取多行到RAM中的缓冲区。

    感谢
+2

以及该函数的名称是'readline'。我不认为选项2是有道理的。 – DeepSpace

+0

@DeepSpace你可能想看看你系统的IO然后...... –

回答

2

它的缓存一路下跌!

的Readline返回可能由被缓冲的字符串:

  1. 的Python运行时,
  2. C标准库(标准输入输出),
  3. CPU缓存,
  4. 存储器,包括虚拟存储器,在恶劣的情况下可能是磁盘!
  5. 磁盘控制器缓存(仅在服务器上),
  6. 磁盘驱动器缓存。

您提出的二分法有不同的答案,具体取决于您正在查看的级别。对于磁盘驱动器,不存在“文件”或“行”之类的东西,因此它总会读取“块”。一旦将一个磁盘块(几KB)加载到内存中,它可能会坐在那里直到内存需要用于别的东西。而C标准库通常每次缓冲几KB。

因此,一个readline调用很可能会完成几行所需的大部分处理,并且只会将第一个返回给您。

当然,Python字符串是动态分配的,这意味着包含该行的对象也需要存储在内存中,而在虚拟内存的情况下,其中一些也可能在磁盘上!