Pythonのお勉強 Part 24
■ このスレッドは過去ログ倉庫に格納されています
0476デフォルトの名無しさん
2008/03/05(水) 23:48:04ただ単に1つのカウントファイルを100万回インクリメントするプログラム
#!/usr/bin/env python
for i in range(1000000) :
f = open("count-file", "r+")
fcntl.flock(f.fileno(), fcntl.LOCK_EX)
cnt = f.readline()
cnt = int(cnt) + 1
f.seek(0)
f.write("%d\n" % cnt)
fcntl.flock(f.fileno(), fcntl.LOCK_UN)
f.close()
を同時に2つ実行するとcount-fileの値が
2000000
になるはずが、
1984329
という風に途中で欠けてしまいます。但し1つ実行する分には正常に動作します。
排他制御がうまくいってないようなのですがどこがいけないのでしょうか。
flockの部分をlockfにしても変化はありません。
OS Gentoo、python 2.5.1
■ このスレッドは過去ログ倉庫に格納されています