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

时间:2010-07-09 09:14:16

标签: python file-io process

我有一个进程正在从一个文件中读取(使用file.read()),一个进程正在写入同一个文件(file.write())。问题是它不起作用 - 我没有错误,但它们无法同时运行。我已经尝试使读取和写入操作无阻塞,然后刷新流,如下所示:

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

我完全误解了吗?如何从不同的流程中完成一个文件的写入和读取?

4 个答案:

答案 0 :(得分:18)

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)

这对我来说很好。

答案 1 :(得分:8)

是否有理由使用通用文件?使用sockets可能会更容易进行进程间通信。

答案 2 :(得分:3)

答案 3 :(得分:1)

另一种很棒的方法是使用管道

This example实例化管道,该管道返回读取器和写入器对象。然后,一个进程使用编写器将其写入管道,另一个进程使用读取器从其进行读取。

Python os.pipe():https://docs.python.org/3/library/os.html#os.pipe