Python - fcntl.flock(fd, op) 檔案鎖應用範例
談 flock 之前,先來聊聊為什麼會需要 flock 。
如果有多個 Processes 同時對同 1 個檔案進行讀寫操作,很容易就會發生同步問題,這時候最簡單的解決的方法就是用個鎖( Lock
)確保同一時間只有 1 個 Process 可以對 1 個共用的檔案進行操作。
而 flock 就是幫忙建立 Lock 的一個機制,其原理是利用 1 個檔案作為鎖(Lock) , Process 要對某個檔案進行讀寫操作時,得先獲得鎖(Lock) 才能進行讀寫操作,其他沒獲得鎖(Lock)的 Process 則會被阻擋無法執行。
另一種常見的情況是為了確保 Crontab 內定期執行的程式同一時間只會有 1 個 Process 在執行,也會利用 flock 避免因為下一次定期執行時間到而又執行一個新的 Process 。
flock 除了可以用 flock
指令之外, Python 也內建提供 fcntl 模組幫我們建立/獲取 flock 鎖。
Posted on May 8, 2018 in Python 程式設計 - 高階 by Amo Chen ‐ 2 min read