Ответ 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)
Это отлично работает для меня.
У меня есть один процесс, который читает из файла (используя file.read()
) и один процесс, который пишет в тот же файл (file.write()
). Проблема в том, что она не работает - я не получаю ошибок, но они не могут работать одновременно. Я попытался сделать операции чтения и записи без блокировки и затем промыть поток следующим образом:
fcntl.fcntl(file, fcntl.F_SETFL, os.O_NONBLOCK)
file.write(msg)
file.flush()
Неужели я полностью его не понимаю? Как выполнить запись и чтение в один файл из разных процессов?
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)
Это отлично работает для меня.
Есть ли причина использовать общий файл? Межпроцессная коммуникация, вероятно, намного проще с помощью сокетов.
Взгляните на этот класс чтения-записи:
и в этих статьях о блокировке и потоке: