我是靠谱客的博主 积极茉莉,最近开发中收集的这篇文章主要介绍print python 如何加锁_Linux环境下,python给程序加锁之fcntl模块的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
在 linux 环境下用 Python 进行运维开发经常会遇到一个程序会启动多个进程,为了保证程序在系统中只有一个进程在运行,而此时就要对程序进行加锁控制,在 Python 的 linux 版本下有个 fcntl 模块可以方便的对程序加锁。
fcntl.flock(f.fileno(), operation) operation 的操作包括以下选项:
fcntl.LOCK_EX
排他锁: 除加锁进程外其他进程没有对已加锁文件读写访问权限fcntl.LOCK_UN
解锁: 对加锁文件进行解锁fcntl.LOCK_SH
共享锁: 所有进程都没有写权限,即使加锁进程也没有,但所有进程都有读权限fcntl.LOCK_NB
非阻塞锁: 如果指定此参数,函数不能获得文件锁就立即返回,否则,函数会等待获得文件锁。 LOCK_NB可以同LOCK_SH或LOCK_EX进行按位或(|)运算操作。如果想要在没有获得这个排他锁的情况下不阻塞那些进程,可以与 LOCK_NB 联合使用,那么系统就不会阻塞该进程
fcnt.flock(f.fileno(),fcntl.LOCK_EX|fcntl.LOCK_NB)
示例:
import time
import fcntl
import sys
def main():
for i in range(10):
time.sleep(1)
print("Hello World!")
if __name__ == '__main__':
file = '/home/liming/Desktop/test.pid'
fd = open(file, 'w')
try:
fcntl.flock(fd.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
except OSError:
print("Another process is running!")
sys.exit(1)
main()
运行结果:
最后
以上就是积极茉莉为你收集整理的print python 如何加锁_Linux环境下,python给程序加锁之fcntl模块的使用的全部内容,希望文章能够帮你解决print python 如何加锁_Linux环境下,python给程序加锁之fcntl模块的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复