Python 标准库之 fcntl
生活随笔
收集整理的這篇文章主要介紹了
Python 标准库之 fcntl
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在 linux 環境下用 Python 進行項目開發過程中經常會遇到多個進程對同一個文件進行讀寫問題,而此時就要對文件進行加鎖控制,在 Python 的 linux 版本下有個 fcntl 模塊可以方便的對文件進行加、解鎖控制。
import fcntl
file_path = "/home/ubuntu/aaa.json"
f = open(file_path, 'w')
fcntl.flock(f.fileno(), fcntl.LOCK_EX) # 加鎖,其它進程對文件操作則不能成功
f.write("something")
fcntl.flock(f.fileno(), fcntl.LOCK_UN) # 解鎖
f.close()
fcntl.flock(f.fileno(), operation) operation 的操作包括以下選項:
-
fcntl.LOCK_EX
排他鎖: 除加鎖進程外其他進程沒有對已加鎖文件讀寫訪問權限
-
fcntl.LOCK_UN
解鎖: 對加鎖文件進行解鎖
-
fcntl.LOCK_SH
共享鎖: 所有進程都沒有寫權限,即使加鎖進程也沒有,但所有進程都有讀權限
-
fcntl.LOCK_NB
非阻塞鎖: 如果指定此參數,函數不能獲得文件鎖就立即返回,否則,函數會等待獲得文件鎖。
LOCK_NB可以同LOCK_SH或LOCK_NB進行按位或(|)運算操作。
fcnt.flock(f.fileno(),fcntl.LOCK_EX|fcntl.LOCK_NB)
總結
以上是生活随笔為你收集整理的Python 标准库之 fcntl的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 标准库之 shutil
- 下一篇: Python 标准库之 uuid