Python - 文件输入输出与执行时间
在Python中执行这样的命令时:
fd = open('some_file', 'r')
data = fd.read()
...
# use data now
...
数据传输到底发生了什么?这里有没有用到DMA?如果我想“测量”使用数据(第一次使用)所需的时间,是否可以这样理解?
从文件到内存的时间是X毫秒, 从内存到CPU使用的时间是Y毫秒。总时间 == X + Y
毫秒?
Python在背后到底做了些什么?
1 个回答
0
普通的Python文件输入输出是阻塞的,这意味着当你使用fd.read()
时,它会一直等着,直到操作系统把数据取回来并传给Python。
缓存、直接内存访问(DMA)等是由操作系统来处理的。不过,你可以自己做一些事情,比如使用posix_fadvise
。从Python 3.3开始,甚至有了os.posix_fadvise
这个功能。对于Python 2,有很多第三方库可以实现类似的功能。
你还可以通过使用线程来模拟异步输入输出,或者找到一个第三方库,让你更轻松地进行异步文件输入输出。