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中文编码问题小结
Sep 28 Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 Python
Python Requests库基本用法示例
Aug 20 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
python中的数组赋值与拷贝的区别详解
Nov 26 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
Dec 10 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
Feb 29 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
Python selenium爬取微博数据代码实例
May 22 Python
pycharm使用技巧之自动调整代码格式总结
Nov 04 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 冲泡冲煮
实用函数5
2007/11/08 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
2014/01/09 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python中正则表达式的详细教程
2015/04/30 Python
Python数据类型详解(一)字符串
2016/05/08 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
旅游管理毕业生自荐信
2013/11/05 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
一份文言文检讨书
2014/09/13 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS