日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python os 文件锁_python 中给文件加锁——fcntl模块

發(fā)布時(shí)間:2024/9/19 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python os 文件锁_python 中给文件加锁——fcntl模块 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如果沒有fcntl模塊則用

sudo pip install fcntl安裝

模塊簡單說明:

打開文件,不存在則創(chuàng)建之

f = open('./test','w')

fcntl.flock(f,fcntl.LOCK_EX)

這樣就對文件test加鎖了,如果有其他進(jìn)程對test文件加鎖,則不能成功,會(huì)被阻塞,但不會(huì)退出程序。

解鎖:fcntl.flock(f,fcntl.LOCK_UN)

fcntl模塊:

flock() : flock(f, operation)

operation : 包括:

fcntl.LOCK_UN 解鎖

fcntl.LOCK_EX 排他鎖

fcntl.LOCK_SH 共享鎖

fcntl.LOCK_NB 非阻塞鎖

LOCK_SH 共享鎖:所有進(jìn)程沒有寫訪問權(quán)限,即使是加鎖進(jìn)程也沒有。所有進(jìn)程有讀訪問權(quán)限。

LOCK_EX 排他鎖:除加鎖進(jìn)程外其他進(jìn)程沒有對已加鎖文件讀寫訪問權(quán)限。

LOCK_NB 非阻塞鎖:

如果指定此參數(shù),函數(shù)不能獲得文件鎖就立即返回,否則,函數(shù)會(huì)等待獲得文件鎖。

LOCK_NB可以同LOCK_SH或LOCK_NB進(jìn)行按位或(|)運(yùn)算操作。

fcnt.flock(f,fcntl.LOCK_EX|fcntl.LOCK_NB)

實(shí)例代碼:

1 #!/usr/bin/python

2 #coding:utf8

3

4 importos5 importsys6 importtime7 importfcntl8

9 classFLOCK(ojbect):10 def __init__(self,name):11

12 self.fobj = open(name,'w')13 self.fd =self.fobj.fileno()14

15 deflock(self):16 try:17 #給文件加鎖,使用了fcntl.LOCK_NB

18 fcntl.lockf(sefl.fd,fcntl.LOCK_EX|fcntl.LOCK_NB)19 print '給文件加鎖,稍等 ... ...'

20 time.sleep(20)21 returnTrue22 except:23 print '文件加鎖,無法執(zhí)行,請稍后運(yùn)行。'

24 retrun False25

26 defunlock(self):27 self.fobj.close()28 print '已解鎖'

29

30 if __name__ == "__main__":31 print sys.argv[1]32 locker = FLOCK(sys.argv[1])33 a =locker.lock()34 ifa:35 print '文件已加鎖'

36 else:37 print '無法執(zhí)行,程序已鎖定,請稍等'

執(zhí)行結(jié)果:

# python lock.py test

test

file lock please waiting..... (在等待期間,在另一個(gè)終端,運(yùn)行此程序會(huì)有下面的結(jié)果)

文件已加鎖

# python lock.py test

test

file no lock please check file...

無法執(zhí)行,程序已鎖定,請稍等

總結(jié)

以上是生活随笔為你收集整理的python os 文件锁_python 中给文件加锁——fcntl模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。