Python - 文件输入输出与执行时间

-1 投票
1 回答
595 浏览
提问于 2025-04-18 12:03

在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,有很多第三方库可以实现类似的功能。

你还可以通过使用线程来模拟异步输入输出,或者找到一个第三方库,让你更轻松地进行异步文件输入输出。

撰写回答