這篇文章主要介紹了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.