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实现的百度站长自动URL提交小工具
Jun 27 Python
用Python实现协同过滤的教程
Apr 08 Python
PyQt实现界面翻转切换效果
Apr 20 Python
pyttsx3实现中文文字转语音的方法
Dec 24 Python
Python利用字典破解WIFI密码的方法
Feb 27 Python
python实现维吉尼亚加密法
Mar 20 Python
Python3 批量扫描端口的例子
Jul 25 Python
Golang GBK转UTF-8的例子
Aug 26 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
Dec 09 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
Python json转字典字符方法实例解析
Apr 13 Python
Pandas自定义选项option设置
Jul 25 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上显示JFreechart画的统计图方法
2013/11/03 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
举例讲解Python中is和id的用法
2015/04/03 Python
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
将Emacs打造成强大的Python代码编辑工具
2015/11/20 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
Python实现新型冠状病毒传播模型及预测代码实例
2020/02/05 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
小学生元旦广播稿
2014/02/21 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
安全责任书范本
2014/04/15 职场文书
完美的中文自荐信
2014/05/24 职场文书
工程售后服务方案
2014/06/08 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
会计工作总结范文2014
2014/12/23 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
全网非常详细的pytest配置文件
2022/07/15 Python