python 利用文件锁单例执行脚本的方法
作者:kwsy2008 发布时间:2021-11-08 08:05:38
标签:python,文件锁,单例
你可能会遇到这样的要求,一个脚本,只允许有一个实例。
在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
来源:https://blog.csdn.net/KWSY2008/article/details/51831369


猜你喜欢
- 多线程概述多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率。python提供了两个模块来实现多线程thr
- 我的经历前几天有人问我这个问题。我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用。这个答案好像并不是他想要的。于是他继续追
- 装饰器(Decorators)装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过继承或是直接修改源代码实现,那么可以
- 前言SPA项目中,首屏加载速度都是老生常谈的问题了,首屏时间直接反应了用户多久能看到页面的主要内容,这决定了用户体验,本文聊一聊如何采集首屏
- 一、Python解释器 安装Windows平台下载地址 https://www.python.org/ftp/python/3.9.5/py
- python运行其他程序的实现方法  
- 关于conda安装matplotlib报错最近在师姐机器上跑实验的时候,想利用matplotlib包来绘制损失曲线图,安装过程中碰到了一些小
- 本文详细讲述了Python2.7环境Flask框架安装方法。分享给大家供大家参考,具体如下:第1步:确保本机已经安装有python,下载ea
- ubuntu18.04版本,python版本python2.7,python3.5,python3.6因为安装一些库会安装到python3.
- Pandas Shift函数基础在使用Pandas的过程中,有时会遇到shift函数,今天就一起来彻底学习下。先来看看帮助文档是怎么说的:&
- 1.将下面一段代码插入<head>与</head>之间:<script> function&
- 本文实例讲述了C#应用XML作为数据库的快速开发框架实现方法。分享给大家供大家参考。具体如下:背景我经常应用C#开发一些小的桌面程序,这些桌
- SQL Server 2008已经发布,我们可以看到它在各方面都有了显著的进步,这些让人侧目之处和失望之处都有可能极大地影响大型企业的采购意
- 1. 路由概念路由的本质就是一种对应关系,根据不同的URL请求,返回对应不同的资源。那么url地址和真实的资源之间就有一种对应的关系,就是路
- 一、出错情况 有些时候当你重启了数据库服务,会发现有些数据库变成了正在恢复、置疑、可疑等情况,这个时候DBA就会很紧张了,下面是一些在实践中
- //设置已存在表中字段为auto_incrementALTER TABLE tablename change id id int(2) no
- python处理按钮消息的实例详解  
- 从视频中提取音频安装 moviepypip install moviepy相关代码:audio_file = work_path +
- write2vin 的 PPT原文路宛兮写的简介:本文解释了以下问题: 1.什么是用户体验? 2.谁发明了这个术语?他想表达什么意思? 3.
- tensorflow在保存权重模型时多使用tf.train.Saver().save 函数进行权重保存,保存的ckpt文件无法直接打开,不利