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基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
mac系统安装Python3初体验
Jan 02 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
Django rstful登陆认证并检查session是否过期代码实例
Aug 13 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
PyTorch实现AlexNet示例
Jan 14 Python
基于python监控程序是否关闭
Jan 14 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
Python创建自己的加密货币的示例
Mar 01 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 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
PHP 5.0对象模型深度探索之对象复制
2008/03/27 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
Web开发之JavaScript
2012/03/29 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
使用JavaScript 实现各种跨域的方法
2013/05/08 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
Python做文本按行去重的实现方法
2016/10/19 Python
python flask中静态文件的管理方法
2018/03/20 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
Pygame框架实现飞机大战
2020/08/07 Python
python如何实现图片压缩
2020/09/11 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
捐赠仪式主持词
2014/03/19 职场文书
服务承诺书怎么写
2014/05/24 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
演讲开场白台词大全
2015/05/29 职场文书
docker-compose部署Yapi的方法
2022/04/08 Servers
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers