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批量创建迅雷任务及创建多个文件
Feb 13 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
Python2/3中urllib库的一些常见用法
Dec 19 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
Apr 22 Python
pip命令无法使用的解决方法
Jun 12 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
Python实现直播推流效果
Nov 26 Python
python默认参数调用方法解析
Feb 09 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 Python
Pytest allure 命令行参数的使用
Apr 18 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 表单提交给自己
2008/07/24 PHP
php面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
jQuery验证插件validation使用指南
2015/04/21 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
vue.js实现二级菜单效果
2019/10/19 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
vue 授权获取微信openId操作
2020/11/13 Javascript
numpy.delete删除一列或多列的方法
2018/04/03 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
Django模板Templates使用方法详解
2019/07/19 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
怎么样写好简历中的自我评价
2013/10/25 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
单位绩效考核方案
2014/05/11 职场文书
心理健康教育主题班会
2015/08/13 职场文书
小学音乐课教学反思
2016/02/18 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
Mysql案例刨析事务隔离级别
2021/09/25 MySQL