我有一个进程在读文件(使用file.read()
),另一个进程在写同一个文件(file.write()
)。问题是它不工作-我没有得到错误,但它们不能同时运行。我已经尝试使读写操作不阻塞,然后刷新流,如下所示:
fcntl.fcntl(file, fcntl.F_SETFL, os.O_NONBLOCK)
file.write(msg)
file.flush()
我是不是完全误解了?应该如何从不同的进程完成对一个文件的写入和读取?
发布于 2010-07-09 17:24:03
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)
这对我来说很好。
发布于 2010-07-09 17:23:42
有使用通用文件的理由吗?使用sockets进行进程间通信可能要容易得多。
发布于 2018-07-27 08:29:03
另一种很好的方法是使用管道
This example实例化一个管道,该管道返回一个读取器和一个写入器对象。然后一个进程使用写入器向管道写入数据,另一个进程使用读取器从管道中读取数据。
https://docs.python.org/3/library/os.html#os.pipe os.pipe():Python
https://stackoverflow.com/questions/3211292
复制相似问题