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中使用成员运算符的示例
May 13 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
python实现简单的单变量线性回归方法
Nov 08 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
python中logging模块的一些简单用法的使用
Feb 22 Python
对Python中TKinter模块中的Label组件实例详解
Jun 14 Python
Python中请不要再用re.compile了
Jun 30 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 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仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
python3简单实现微信爬虫
2015/04/09 Python
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
python K近邻算法的kd树实现
2018/09/06 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
python带参数打包exe及调用方式
2019/12/21 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
巴西最大的家电和百货零售商:Casas Bahia
2016/11/22 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
敬老文明号事迹材料
2014/01/16 职场文书
教师党员公开承诺书
2014/03/25 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
2014年教学工作总结
2014/11/13 职场文书
培训通知
2015/04/17 职场文书
《假如》教学反思
2016/02/17 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
国产动画《万圣街》日语配音版制作决定!
2022/03/20 国漫
Nginx动静分离配置实现与说明
2022/04/07 Servers