Python - 文件I / O和执行时间

时间:2014-07-03 21:55:23

标签: python file-io

在Python中执行此类命令时:

fd = open('some_file', 'r')

data = fd.read()

...

# use data now

...

数据传输究竟发生了什么? DMA是否适用于此处?如果我想“测量”直到我使用数据所需的时间(第一次),它将如下所示?

使用DMA从文件到内存的X毫秒,从内存到CPU的Y毫秒使用。 Total time == X + Y msec? Python究竟做了什么?

1 个答案:

答案 0 :(得分:0)

常规python文件I / O正在阻塞(因为底层的C-Runtime实现和/或OS系统调用正在阻塞),这意味着fd.read()将阻塞,直到操作系统实际检索到数据并传递给python。 / p>

如何处理缓存,DMA等主要取决于操作系统。但是你可以自己做posix_fadvise这样的事情。从Python 3.3开始,甚至有os.posix_fadvise。对于Python2,有许多第三方库实现了相同的功能。

您还可以使用线程模拟异步I / O,或者找到第三方库,使您可以轻松地执行异步文件I / O.