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 异常处理实例详解
Mar 12 Python
python中异常报错处理方法汇总
Nov 20 Python
python 实现自动远程登陆scp文件实例代码
Mar 13 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
python中时间、日期、时间戳的转换的实现方法
Jul 06 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
Python Collatz序列实现过程解析
Oct 12 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
Python 绘制多因子柱状图
May 11 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与php MySQL 之间的关系
2009/07/17 PHP
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
thinkphp3.2.3 分页代码分享
2016/07/28 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
javascript 面向对象继承
2009/11/26 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
详解Document.Cookie
2015/12/25 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
Vue.js用法详解
2017/11/13 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
python调用百度API实现人脸识别
2020/11/17 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
new修饰符是起什么作用
2015/06/28 面试题
打架检讨书50字
2014/01/11 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书