Pythonでファイルを排他制御する

ファイル書き込み時にロックを取得する。
ロックが取得できなかった時はブロックせず、一定時間経過後、再度ブロックの取得を試みる。

■サンプルスクリプト

# ファイルロックサンプルスクリプト
import sys
import fcntl
import datetime
import time

if len(sys.argv) == 1:
    print('引数が違います')
    sys.exit()

with open('hello.txt', 'wt') as f:
    while True:
        try:
            # ロックが取得できなかったときはブロックしない => IOError
            fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
        except IOError:
            print('can\'t lock file')
            time.sleep(0.5)
            continue
        else:
            now = datetime.datetime.now()
            print('{:02}:{:02}:{:02}'.format(now.hour, now.minute, now.second), file=f, end='\n')
            print(sys.argv[1], file=f, end='\n')
            time.sleep(3)
            fcntl.flock(f, fcntl.LOCK_UN)
            break