Python实现保证只能运行一个脚本实例
保证只能运行一个脚本实例,方法是程序运行时监听一个特定端口,如果失败则说明已经有实例在跑。
使用装饰器实现,便于重用
import functools
def just_one_instance(func):
'''
装饰器
如果已经有实例在跑则退出
:return:
'''
@functools.wraps(func)
def f(*args,**kwargs):
import socket
try:
# 全局属性,否则变量会在方法退出后被销毁
global s
s = socket.socket()
host = socket.gethostname()
s.bind((host, 60123))
except:
print('already has an instance')
return None
return func(*args,**kwargs)
return f
[code]
在脚本的主函数上使用:
[code]
@just_one_instance
main():
do sth.
相关推荐
-
Python实现保证只能运行一个脚本实例
保证只能运行一个脚本实例,方法是程序运行时监听一个特定端口,如果失败则说明已经有实例在跑. 使用装饰器实现,便于重用 复制代码 代码如下: import functools def just_one_instance(func): ''' 装饰器 如果已经有实例在跑则退出 复制代码 代码如下: :return: ''' @functools.wraps(func) def f(*args,**kwargs): import socket try:
-
Python实现脚本锁功能(同时只能执行一个脚本)
1. 文件锁 脚本启动前检查特定文件是否存在,不存在就启动并新建文件,脚本结束后删掉特定文件. 通过文件的判断来确定脚本是否正在执行. 方法实现也比较简单,这里以python脚本为例 #coding=utf-8 # # 文件锁脚本测试 # import os #操作系统 import time lockfilepath = "/opt/lock.txt"; #判断文件是否存在 if os.path.exists(lockfilepath): #文件存在,说明脚本正在执行 print(&
-
python代码 FTP备份交换机配置脚本实例解析
代码如下 #!/bin/python #coding=utf-8 #python-version=2.75 #使用python2 from ftplib import FTP #引用ftplib库中的FTP功能模块,进行ftp下载使用 import time #引用time模块 import os #引用os模块 """ 使用字典,定义交换机主机,一个字典包含多个键 ,一个键使用一个列表,包含多个主机地址按照实际情况定义 """ dic = {
-
用Python制作检测Linux运行信息的工具的教程
在这篇文章里,我们将会探索如何使用Python语言作为一个工具来检测Linux系统各种运行信息.让我们一起来学习吧. 哪种Python? 当我提到Python时,我一般是指CPython 2(准确来说是2.7).当同样的代码不能在CPython3(3.3)运行时,我们明确地把它指出并给出替代的代码,解释它们之间的不同点.请确保你已经安装了CPython,在终端输入python或者python3你会看到Python提示符出现在你的终端里. 请注意,所有的脚本程序都会以#!/usr/bin/env
-
使用python制作一个为hex文件增加版本号的脚本实例
最近公司一个项目需要用到IAP升级,要求将APP的版本号在hex文件添加,于是尝试用python写一个脚本,运行之后可以自动增加版本号,并且日期都是当天的 import re import time #获取日期的数据及校验和 year = int(time.strftime("%y", time.localtime())) month = int(time.strftime("%m", time.localtime())) date = int(time.strft
-
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
第一点:找Python安装目录 方法一: 方法二: 输入import sys print(sys.path) 化黑线处 第二点:找到安装目录后就可以开始设置环境变量 这里我的安装目录为C:\Program Files\Python36 再字符串的末尾,加一个分号; 然后再输入你安装python的路径,如图所示 一路点确定,确定,直到设置完成 打开命令行,输入python,出现以下提示即为配置成功 最后一点:如何在命令行运行python脚本 前提是已经按上述方法完成设置 打开命令行把脚本文件拖入,
-
bat脚本实例实现只允许运行一个实例(安装程序、创建快捷方式脚本)
复制代码 代码如下: ;我的第一个安装脚本!include "MUI2.nsh"!define DIR "D:\workspace\nsis\files" Name "安装程序"Icon "${DIR}\setup128.ico"OutFile "setup.exe"InstallDir "$PROGRAMFILES\kaserv"RequestExecutionLevel admin
-
使用python写一个自动浏览文章的脚本实例
创建python文件fling.py,代码如下: #!/usr/bin/env monkeyrunner import time from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice device = MonkeyRunner.waitForConnection(5) loop = 0 loop_back = 0 # fling up def scrollUpFling(): device.touch(100, 500,
-
python实现在每个独立进程中运行一个函数的方法
本文实例讲述了python实现在每个独立进程中运行一个函数的方法.分享给大家供大家参考.具体分析如下: 这个简单的函数可以同于在单独的进程中运行另外一个函数,这对于释放内存资源非常有用 #!/usr/bin/env python from __future__ import with_statement import os, cPickle def run_in_separate_process(func, *args, **kwds): pread, pwrite = os.pipe() pi
-
C# WinForm 判断程序是否已经在运行,且只允许运行一个实例,附源码
我们开发WinFrom程序,很多时候都希望程序只有一个实例在运行,避免运行多个同样的程序,一是没有意义,二是容易出错. 为了更便于使用,笔者整理了一段自己用的代码,可以判断程序是否在运行,只运行一个实例,而且能实现当程序在运行时,再去双击程序图标,直接呼出已经运行的程序. 下面看代码,只需在程序的入口文件中加如下代码即可: static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] s
随机推荐
- seaJs的模块定义和模块加载浅析
- 详解ASP.NET Core 在 JSON 文件中配置依赖注入
- java数据结构与算法之双向循环队列的数组实现方法
- Mybatis实体类和表映射问题(推荐)
- VB.NET设置屏幕分辨率、颜色位数、刷新率 实例代码
- js的[defer]和[async]属性
- php简单统计字符串单词数量的方法
- 探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
- php file_get_contents函数轻松采集html数据
- 一个用mysql_odbc和php写的serach数据库程序
- nodejs实例解析(输出hello world)
- JavaScript-RegExp对象只能使用一次问题解决方法
- PHP与Ajax相结合实现登录验证小Demo
- css写菜单:简洁注释版
- Bootstrap分页插件之Bootstrap Paginator实例详解
- javascript中将Object转换为String函数代码 (json str)
- 由Apache 500错误引出的临时文件问题分析解决
- Android清空应用内部文件缓存
- PHP系统流量分析的程序
- Java继承extends与super关键字详解