Skip to content

Python 3で複数プロセスでflockを使って排他制御を行うサンプルコード

Notifications You must be signed in to change notification settings

heiwa4126/python_flock_ex1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

python_flock_ex1

Python 3で複数プロセスでflockを使って排他制御を行うサンプルコード。 flock()を使っているのでUNIXのみ動く。詳しくはman 2 flock参照。

動かし方

  • init_cnt.py - カウンターを0に初期化
  • inc_cnt.py - カウンターを10000増やす(排他制御なし)。並行で複数動かすと死ぬ。
  • flock_inc_cnt.py - カウンターを10000増やす。並行で動かしても死なない。
# 期待通りに動く
./init_cnt.py ; ./inc_cnt.py

# 死ぬ。または30000にならない
./init_cnt.py ; ./inc_cnt.py & ./inc_cnt.py & ./inc_cnt.py

# 30000になる
./init_cnt.py ; ./flock_inc_cnt.py & ./flock_inc_cnt.py & ./flock_inc_cnt.py

そのほかメモ

COUNTER_FILEと別にLOCK_FILEが必要なのは、 COUNTER_FILEをオープンした時点でバッファされてしまうからだと思う。

あと、例外の補足をしてないのがよろしくないので (ロックファイルが開放されない) あとで追加する。 -> 追加しました

About

Python 3で複数プロセスでflockを使って排他制御を行うサンプルコード

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published