DDR爱好者之家 Design By 杰米

保证只能运行一个脚本实例,方法是程序运行时监听一个特定端口,如果失败则说明已经有实例在跑。

使用装饰器实现,便于重用
复制代码 代码如下:
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.

DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米