別のプロセスが、同じファイルを開いて書き込むことができるかどうかのテスト

同時に実行されている別のプロセスがある。そのプロセスが同じファイルに書き込みをしたい。そういうことができるかどうか、ふと疑問に思ったので簡単なプログラムで確認してみる。

2つテストコードを書く。まず、最初に実行する方。

import time

fp = open('test.dat', 'a')

time.sleep(10.0)
fp.write('1111')
time.sleep(10.0)

fp.close()

ファイルを開いてからしばらく(10秒間)スリープする。その後、ファイルに書き込みをする。そしてまたスリープ(10秒間)して、ファイルを閉じる。

次に後から実行する方。

import time

fp = open('test.dat', 'a')
fp.write('2222')

fp.close()

最初に実行した方がスリープしている間に、同じファイルを開いて書き込みを行う。その後すぐにファイルを閉じる。

書きこまれたファイルを開くと、

22221111

となっている。

つまり、この単純な実験から別のプロセスが同じファイルに書き込むことができることは分かった。通信して書きこむ順序を制御できれば、それなりに思い通りのファイル出力が得られるということだ。