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自定义解析简单xml格式文件的方法
May 11 Python
利用Python为iOS10生成图标和截屏
Sep 24 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
matplotlib实现热成像图colorbar和极坐标图的方法
Dec 13 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
Jul 06 Python
Django框架 Pagination分页实现代码实例
Sep 04 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 Python
详解Python函数print用法
Jun 18 Python
Python实现猜拳与猜数字游戏的方法详解
Apr 06 Python
python如何为list实现find方法
May 30 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
单点登录 Ucenter示例分析
2013/10/29 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
详解python和matlab的优势与区别
2019/06/28 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
python dataframe NaN处理方式
2019/12/26 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
如何在Python对Excel进行读取
2020/06/04 Python
python操作toml文件的示例代码
2020/11/27 Python
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
介绍一下write命令
2014/08/10 面试题
玩具公司的创业计划书
2013/12/31 职场文书
教师党性分析材料
2014/02/04 职场文书
护士毕业实习感言
2014/03/05 职场文书
教堂婚礼主持词
2014/03/14 职场文书
广告词串烧
2014/03/19 职场文书
学习雷锋寄语大全
2014/04/11 职场文书
优质服务演讲稿
2014/05/14 职场文书
扬尘污染防治方案
2014/06/15 职场文书