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与set的使用
Aug 10 Python
Python 基础教程之包和类的用法
Feb 23 Python
Python中标准模块importlib详解
Apr 16 Python
python通过opencv实现批量剪切图片
Nov 13 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
Nov 24 Python
python实现俄罗斯方块
Jun 26 Python
Python实现多线程的两种方式分析
Aug 29 Python
python获取当前文件路径以及父文件路径的方法
Jul 10 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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
杏林同学录(九)
2006/10/09 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
php生成随机颜色的方法
2014/11/13 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
python条件和循环的使用方法
2013/11/01 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
numpy.array 操作使用简单总结
2019/11/08 Python
Python Django form 组件动态从数据库取choices数据实例
2020/05/19 Python
详解Python设计模式之策略模式
2020/06/15 Python
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
小学二年级语文教学反思
2016/03/03 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书