两个进程同时读写同一文件 Python

23 投票
4 回答
24619 浏览
提问于 2025-04-16 01:02

我有一个进程在从一个文件中读取内容(用的是 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)

这个对我来说运行得很好。

撰写回答