两个进程同时读写同一文件 Python
我有一个进程在从一个文件中读取内容(用的是 file.read()
),还有一个进程在往同一个文件里写内容(用的是 file.write()
)。问题是这样做不行——虽然没有报错,但这两个操作不能同时进行。我尝试让读取和写入操作都不阻塞,然后刷新流,代码如下:
fcntl.fcntl(file, fcntl.F_SETFL, os.O_NONBLOCK)
file.write(msg)
file.flush()
我是不是完全搞错了?应该怎么才能让不同的进程同时读写同一个文件呢?
4 个回答
10
使用一个公共文件有什么好处吗?其实,进程之间的沟通用套接字可能会简单得多。
22
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)
这个对我来说运行得很好。