2010-07-09 157 views
14

我有一個從文件讀取(使用file.read())的進程和一個正在寫入同一文件(file.write())的進程。問題是它不起作用 - 我沒有得到任何錯誤,但它們不能同時運行。我試過讓讀寫操作無阻塞然後刷新流,如下:讀取/寫入同一文件的兩個進程Python

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

我完全誤解了嗎?應該如何完成從不同進程中的一個文件的寫入和讀取?

回答

15

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) 

這工作對我很好。

+0

是的,這對我來說也很好,謝謝。 – Andreas 2010-07-09 09:41:34

+1

請注意,os.O_NONBLOCK在Windows下不可用。 – yoyo 2015-06-30 01:52:57

8

是否有使用通用文件的理​​由?使用sockets,進程間通信可能更容易。

+2

你當然得到了一個觀點。我最初想到這樣做,但改變了主意,並去了文件I/O,一旦我遇到問題,並開始與它搏鬥,我有點到了我想解決它的地步:P。謝謝你的答案。 – Andreas 2010-07-09 09:40:26

相關問題