Как отобразить файл, принадлежащий другому потоку?

Я пытаюсь создать приложение, которое отображает в GUI содержимое файла журнала, написанное отдельной программой, которую я вызываю подпроцессом. Приложение работает в Windows и представляет собой двоичный файл, который я не контролирую. Кроме того, это приложение (Actel Designer, если кто-либо заботится) будет записывать свой вывод в файл журнала независимо от того, как я перенаправляю вывод подпроцесса, поэтому использование канала для вывода не представляется возможным. Суть в том, что я, кажется, вынужден считывать из файла журнала, в то время как другой поток может писать на него. Мой вопрос в том, есть ли способ, чтобы я мог постоянно обновлять содержание файла журнала в графическом интерфейсе?

Я пробовал следующее:

1. Наивное открытие файла для чтения периодически, пока ребенок
процесс запущен, вызывает сбой Python (я предполагаю, потому что
дочерний поток записывает в файл, пока я пытаюсь прочитать его
содержание)
2. Далее я попытался открыть дескриптор файла до имени файла журнала, прежде чем вызывать дочерний процесс с помощью GENERIC\_READ, и SHARED\_READ | SHARED\_WRITE | SHARED\_DELETE и чтение из этого файла. При таком подходе файл выглядит пустым.

Спасибо за любую помощь, которую вы можете предоставить - я не профессиональный программист, и я тянул свои волосы за это неделю.

Вы должны зарегистрироваться для уведомлений об изменении файла, способом  [`tail -f`](https://linux.die.net/man/1/tail)  (вы можете узнать, какие системные вызовы он использует, выполняя  `strace tail -f logfile` ).

[pyinotify](https://github.com/seb-m/pyinotify) provides a Python interface for these file change notifications.