python 利用文件锁单例执行脚本的方法


Posted in Python onFebruary 19, 2019

你可能会遇到这样的要求,一个脚本,只允许有一个实例。

在python中,为了实现这个需求,可以引入fcntl模块对文件加一个排他锁,这样一来,先启动的实例拥有了文件锁,而后启动的实例则因无法获取锁而退出

#coding=utf-8
import fcntl, sys, time, os 
pidfile = 0 
 
def ApplicationInstance(): 
  global pidfile 
  pidfile = open(os.path.realpath(__file__), "r") 
  try: 
    fcntl.flock(pidfile, fcntl.LOCK_EX | fcntl.LOCK_NB) #创建一个排他锁,并且所被锁住其他进程不会阻塞 
  except: 
    print "another instance is running..." 
    sys.exit(1) 
 
if __name__ == "__main__": 
  ApplicationInstance() 
  while True: 
    print 'running...' 
    time.sleep(1)

需要注意的是,fcntl模块只能在linux环境下使用,windows上是没有的,这再次警告我们,拥抱linux,远离windows

以上这篇python 利用文件锁单例执行脚本的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之dict()的操作方法
Sep 24 Python
Python写入数据到MP3文件中的方法
Jul 10 Python
python MysqlDb模块安装及其使用详解
Feb 23 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
python基础知识(一)变量与简单数据类型详解
Apr 17 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
python django下载大的csv文件实现方法分析
Jul 19 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 Python
Python 实现一个简单的web服务器
Jan 03 Python
如何用Django处理gzip数据流
Jan 29 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
Feb 06 Python
对Python协程之异步同步的区别详解
Feb 19 #Python
在python里从协程返回一个值的示例
Feb 19 #Python
Python3多线程基础知识点
Feb 19 #Python
Python进阶之全面解读高级特性之切片
Feb 19 #Python
在python里协程使用同步锁Lock的实例
Feb 19 #Python
对python 通过ssh访问数据库的实例详解
Feb 19 #Python
python 通过SSHTunnelForwarder隧道连接redis的方法
Feb 19 #Python
You might like
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
python登陆asp网站页面的实现代码
2015/01/14 Python
python实现windows下文件备份脚本
2018/05/27 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
小饰品店的创业计划书范文
2013/12/28 职场文书
节约每一滴水演讲稿
2014/09/09 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
小学生成绩单评语
2014/12/31 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书