在Python中执行此类命令时:
fd = open('some_file', 'r')
data = fd.read()
...
# use data now
...
数据传输究竟发生了什么? DMA是否适用于此处?如果我想“测量”直到我使用数据所需的时间(第一次),它将如下所示?
使用DMA从文件到内存的X毫秒,从内存到CPU的Y毫秒使用。 Total time == X + Y
msec?
Python究竟做了什么?
答案 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.