2010-07-09 13 views
14

Ich habe einen Prozess, der aus einer Datei liest (mit file.read()) und einen Prozess, der in die gleiche Datei schreibt (file.write()). Das Problem ist, dass es nicht funktioniert - ich bekomme keine Fehler, aber sie können nicht gleichzeitig arbeiten. Ich habe versucht, die Lese machen und Operationen keine blockierende schreiben und dann den Strom Spülung, wie folgt:Zwei Prozesse lesen/schreiben in die gleiche Datei Python

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

Bin ich Mißverständnis es vollständig? Wie sollte man das Schreiben und Lesen einer Datei aus verschiedenen Prozessen erledigen?

Antwort

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) 

Dies funktioniert gut für mich.

+0

Ja, das hat auch bei mir gut funktioniert, danke. – Andreas

+1

Beachten Sie, dass os.O_NONBLOCK unter Windows nicht verfügbar ist. – yoyo

8

Gibt es einen Grund, eine gemeinsame Datei zu verwenden? Interprozesskommunikation ist wahrscheinlich viel einfacher mit sockets.

+2

Sie haben sicherlich einen Punkt bekommen. Ich dachte zuerst über diese Art und Weise nach, aber änderte meine Meinung und ging zu Datei-I/O, und sobald ich das Problem und fing an, damit zu kämpfen, kam ich irgendwie zu dem Punkt, wo ich es lösen will: P. Danke für die Antwort noch. – Andreas

Verwandte Themen