Python 读取/写入同一文件的两个进程
我有一个进程正在读取一个文件(使用Python 读取/写入同一文件的两个进程,python,file-io,process,Python,File Io,Process,我有一个进程正在读取一个文件(使用file.read()),还有一个进程正在写入同一个文件(file.write())。问题是它不工作-我没有错误,但它们不能同时运行。我已尝试使读写操作无阻塞,然后刷新流,如下所示: fcntl.fcntl(file, fcntl.F_SETFL, os.O_NONBLOCK) file.write(msg) file.flush() 我完全误解了吗?如何从不同的进程完成对一个文件的写入和读取?看看这个读写锁定类: 在这篇关于锁定和线程的文章中:
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)
这对我来说很好。另一个很好的方法是使用管道 实例化管道,该管道返回读取器和写入器对象。然后,一个进程使用writer写入管道,另一个进程使用reader读取管道
Python os.pipe():你肯定说得对。我最初想到了这种方法,但后来改变了主意,选择了文件I/o,一旦我遇到了问题并开始努力解决,我就有点想解决它了:P。仍然感谢你的回答。请注意,os.o_NONBLOCK在Windows下不可用。