Чтение из файла, в который выполняется запись - Почему это работает? - PullRequest
0 голосов
/ 27 мая 2020

В основном я искал способ чтения из файла, который постоянно записывается в Python, например файла журнала.

Я нашел это: { ссылка }

И ответ:

import time
def follow(thefile):
    thefile.seek(0,2)
    while True:
        line = thefile.readline()
        if not line:
            time.sleep(0.1)
            continue
        yield line

if __name__ == '__main__':
    logfile = open("run/foo/access-log","r")
    loglines = follow(logfile)
    for line in loglines:
        print line,

Я начал спрашивать себя, почему это работает. Я имею в виду, хорошо, теоретически, искать до конца, ждать, пока подойдет очередь, прочитать и распечатать - довольно просто, правда? Но почему возможно, что два процесса работают с одним и тем же файлом, один записывает в него (и закрывает), другой читает из него, и дескриптор thefile никоим образом не поврежден и может читать следующую строку из файл? Разве это не была бы какая-то критическая секция?

...