Python实现脚本锁功能(同时只能执行一个脚本)


Posted in Python onMay 10, 2017

1. 文件锁

脚本启动前检查特定文件是否存在,不存在就启动并新建文件,脚本结束后删掉特定文件。

通过文件的判断来确定脚本是否正在执行。

方法实现也比较简单,这里以python脚本为例

#coding=utf-8
 #
 # 文件锁脚本测试
 #
 import os  #操作系统
 import time
 lockfilepath = "/opt/lock.txt";
 #判断文件是否存在
 if os.path.exists(lockfilepath):
  #文件存在,说明脚本正在执行
  print("脚本正在执行")
 else:
  #文件不存在,创建文件,并执行任务。
  lockfile = open(lockfilepath,"w+");
  print ("文件锁 任务模拟sleep 10s");
 time.sleep(10);
  print ("任务模拟结束 sleep over ");
  #删除文件
  os.remove(lockfilepath);

文件锁测试结果

Python实现脚本锁功能(同时只能执行一个脚本)

Python实现脚本锁功能(同时只能执行一个脚本)

2.端口占用

使用socket模块,在脚本执行时,给系统中增加一个端口,在脚本执行完后释放。

脚本执行时,去创建这个端口,如果脚本还在执行,端口会创建失败,提示脚本还在执行。

实现方法也比较简单:Python脚本

#coding=utf-8
 import time
 import socket 
 suo = 1
 try:
  global hyf_suo 
  hyf_suo = socket.socket()
  addr = ('',98889)
  hyf_suo.bind(addr);
  suo = 1;
 except:
  suo = 2;
  print('already has an instance')
 
 if(suo==1):
  print ("锁住 sleep ");
  time.sleep(10);
  print ("sleep over ");
 else:
  print("已经加锁了");

 端口锁测试结果

Python实现脚本锁功能(同时只能执行一个脚本)

Python实现脚本锁功能(同时只能执行一个脚本)

结论

以上两种方法都能实现脚本锁的功能,个人更倾向于使用第二种方法。端口锁的方法。

以上所述是小编给大家介绍的Python实现脚本锁功能(同时只能执行一个脚本),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python连接phoenix的方法示例
Sep 29 Python
python实现整数的二进制循环移位
Mar 08 Python
Python 3.8新特征之asyncio REPL
May 28 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
PyQt4编程之让状态栏显示信息的方法
Jun 18 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
使用python实现回文数的四种方法小结
Nov 24 Python
python进程池实现的多进程文件夹copy器完整示例
Nov 27 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
python爬虫请求头的使用
Dec 01 Python
Python实现简单猜数字游戏
Feb 03 Python
python 3.5下xadmin的使用及修复源码bug
May 10 #Python
Python遍历文件夹和读写文件的实现方法
May 10 #Python
python中requests小技巧
May 10 #Python
Python实现针对中文排序的方法
May 09 #Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 #Python
Python利用operator模块实现对象的多级排序详解
May 09 #Python
网站渗透常用Python小脚本查询同ip网站
May 08 #Python
You might like
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
JQuery页面地址处理插件jqURL详解
2015/05/03 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
Python and、or以及and-or语法总结
2015/04/14 Python
24式加速你的Python(小结)
2019/06/13 Python
使用python模拟高斯分布例子
2019/12/09 Python
python异步Web框架sanic的实现
2020/04/27 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
关键字final的用法
2013/10/02 面试题
成教自我鉴定
2013/10/27 职场文书
岗位职责定义及内容
2013/11/08 职场文书
班级入场式解说词
2014/02/01 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
倡议书格式范文
2014/04/14 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
详解nginx进程锁的实现
2021/06/14 Servers