3

这两者有什么区别吗?

A:

# seek back by difference from current position
fp.seek(last_read_byte - fp.tell(), os.SEEK_CUR)

乙:

# seek by absolute position from start of the file
fp.seek(last_read_byte)

fp是一个python文件对象)

我只是认为B)可能会从头开始读取文件。我如何检查是否是这种情况?
我应该担心这种愚蠢的事情吗?

4

1 回答 1

5

调用 seek 不会从头重新读取整个文件。

我会使用绝对搜索——它更容易正确和阅读;它不会浪费一个额外的系统调用来告诉你;如果文件在调用之间发生更改,则它没有竞争条件......

如果您担心性能,那么测试性能不仅更有用,而且更容易,而不是尝试猜测它是如何工作的,然后尝试猜测性能影响会是什么。只需创建一个大文件,然后在一段时间内尝试两个版本。

于 2013-10-19T22:05:17.563 回答