Два процесса чтения/записи в один файл Python

У меня есть один процесс, который читает из файла (используя file.read()) и один процесс, который пишет в тот же файл (file.write()). Проблема в том, что она не работает - я не получаю ошибок, но они не могут работать одновременно. Я попытался сделать операции чтения и записи без блокировки и затем промыть поток следующим образом:

fcntl.fcntl(file, fcntl.F_SETFL, os.O_NONBLOCK)
file.write(msg)
file.flush()

Неужели я полностью его не понимаю? Как выполнить запись и чтение в один файл из разных процессов?

Ответы

Ответ 1

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)

Это отлично работает для меня.

Ответ 2

Есть ли причина использовать общий файл? Межпроцессная коммуникация, вероятно, намного проще с помощью сокетов.