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脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
Jun 07 Python
基于python中的TCP及UDP(详解)
Nov 06 Python
python+splinter自动刷新抢票功能
Sep 25 Python
python获取url的返回信息方法
Dec 17 Python
Python爬虫动态ip代理防止被封的方法
Jul 07 Python
Python Web框架之Django框架文件上传功能详解
Aug 16 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
pytorch 求网络模型参数实例
Dec 30 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 Python
python对接ihuyi实现短信验证码发送
May 10 Python
keras 自定义loss层+接受输入实例
Jun 28 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导入导出Excel代码
2015/07/07 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
python制作小说爬虫实录
2017/08/14 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
python爬取天气数据的实例详解
2020/11/20 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
大学生预备党员自我评价分享
2013/11/16 职场文书
就业自荐书
2013/12/05 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
委托书的写法
2014/09/16 职场文书
员工工作自我评价
2014/09/26 职场文书
教师个人总结范文
2015/02/11 职场文书
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers