保證只能運行一個腳本實例,方法是程序運行時監聽一個特定端口,如果失敗則說明已經有實例在跑。
使用裝飾器實現,便于重用
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.
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
