test1.py
import os
f = open('txt.txt', 'a', os.O_NONBLOCK)
while 1:
f.write('asd')
f.flush()
test2.py
import os
f = open('txt.txt', 'r', os.O_NONBLOCK)
while 1:
print f.read(3)
У меня это отлично работает.
Есть ли причина использовать общий файл? Межпроцессное взаимодействие, вероятно, намного проще, используя сокеты .
Еще один отличный способ сделать это - использовать канал
В этом примере создается канал, который возвращает объект чтения и записи. Затем один процесс записывает данные в канал, используя программу записи, а другой читает из нее, используя программу чтения.
Python os.pipe (): https://docs.python.org/3/library/os.html#os.pipe
Посмотрите на этот класс Read-Write Lock:
и на эти статьи о блокировке и потоках: