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 相关文章推荐
使用graphics.py实现2048小游戏
Mar 10 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
深入理解Python对Json的解析
Feb 14 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
详解Python函数式编程—高阶函数
Mar 29 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
pytorch获取vgg16-feature层输出的例子
Aug 20 Python
Python 爬取必应壁纸的实例讲解
Feb 24 Python
Python可视化神器pyecharts之绘制地理图表练习
Jul 07 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
php header示例代码(推荐)
2010/09/08 PHP
php生成随机数的三种方法
2014/09/10 PHP
ThinkPHP提交表单时默认自动转义的解决方法
2014/11/25 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
python根据距离和时长计算配速示例
2014/02/16 Python
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
函授毕业自我鉴定
2013/12/19 职场文书
初级会计求职信范文
2014/02/15 职场文书
社区护士演讲稿
2014/08/27 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
公司禁烟通知
2015/04/23 职场文书
医院党建工作总结2015
2015/05/26 职场文书
葬礼主持词
2015/07/02 职场文书
使用tensorflow 实现反向传播求导
2021/05/26 Python
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS
Python闭包的定义和使用方法
2022/04/11 Python
Go语言安装并操作redis的go-redis库
2022/04/14 Golang