Python 标准库之 fcntl

Python 标准库之 fcntl在 linux 环境下用 Python 进行项目开发过程中经常会遇到多个进程对同一个文件进行读写问题 而此时就要对文件进行加锁控制 在 Python 的 linux 版本下有个 fcntl 模块可以方便的对文件进行加 解锁控制 importfcntlf path home ubuntu aaa json f open file path w fcntl flock

在 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) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201879.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:24
下一篇 2026年3月20日 上午8:24


相关推荐

  • 寄存器的英文全称

    寄存器的英文全称AH amp AL AX accumulator 累加寄存器 BH amp BL BX base 基址寄存器 CH amp CL CX count 计数寄存器 DH amp DL DX data 数据寄存器 SP StackPointer 堆栈指针寄存器 BP BasePointer 基址指针寄存器 SI SourceIndex 源变址寄存器 DI DestinationI 目的变址

    2026年3月20日
    1
  • 脑力触发:记忆冠军的大脑训练术

    脑力触发:记忆冠军的大脑训练术你有一种骄傲 虽然受了伤害 但是不肯屈服 也许就是这种东西 把你的漂亮塑成了美丽 玛丽 瑞瑙特 波斯少年 要想改变自己的习惯 必须首先认识到这个问题 然后才能有意识地去改变 我们对自己感兴趣和想做的事情学得最快 为了能牢牢记住所学的知识 我们不仅要付出努力 还要有学习的动力 也就是我们要让自己兴奋起来 因为我们此时可以感受到所谓的积极压力 我们的大脑也可以借此顺利运转 当然 使用互联网会带来很多积极效果 但是神经生物学家和心理学家的研究证实 如果来自互联网页面的刺激过度 不仅会导致仓促的阅读 还会

    2026年3月18日
    2
  • Eclipse中SVN的安装步骤(两种)和用法

    Eclipse中SVN的安装步骤(两种)和用法

    2021年11月16日
    39
  • 遍历hashmap的三种方式_java map 遍历删除

    遍历hashmap的三种方式_java map 遍历删除在Java中有多种遍历HashMap的方法,注意Java中所有的Map类型都实现了共有的Map接口,所以接下来方法适用于所有Map(如:HaspMap,TreeMap,LinkedMap,HashTable,etc)方法1使用For-Each迭代entries这是最常见的方法,并在大多数情况下更可取的。当你在循环中需要使用Map的键和值时,就可以使用这个方法Mapmap=newHashM…

    2025年10月11日
    4
  • Tomcat学习—Tomcat的端口修改和编码方式修改

    在学习使用Tomcat的时候,了解一下Tomcat的默认端口修改和默认编码方式修改,方便以后更深入的学习。

    2022年2月24日
    48
  • PIP 更换国内安装源「建议收藏」

    PIP 更换国内安装源「建议收藏」pip国内的一些镜像  阿里云http://mirrors.aliyun.com/pypi/simple/  中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/  豆瓣(douban)http://pypi.douban.com/simple/  清华大学https://pypi.tuna.tsinghua.edu.cn/simpl…

    2022年6月4日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号