Python實(shí)現(xiàn)保證只能運(yùn)行一個(gè)腳本實(shí)例
保證只能運(yùn)行一個(gè)腳本實(shí)例,方法是程序運(yùn)行時(shí)監(jiān)聽一個(gè)特定端口,如果失敗則說明已經(jīng)有實(shí)例在跑。
使用裝飾器實(shí)現(xiàn),便于重用
import functools
def just_one_instance(func):
'''
裝飾器
如果已經(jīng)有實(shí)例在跑則退出
:return:
'''
@functools.wraps(func)
def f(*args,**kwargs):
import socket
try:
# 全局屬性,否則變量會(huì)在方法退出后被銷毀
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]
在腳本的主函數(shù)上使用:
[code]
@just_one_instance
main():
do sth.
相關(guān)文章
python協(xié)程之yield和yield?from實(shí)例詳解
Python在并發(fā)處理上不僅提供了多進(jìn)程和多線程的處理,還包括了協(xié)程,下面這篇文章主要給大家介紹了關(guān)于python協(xié)程之yield和yield?from的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12Python語法糖for?else循環(huán)語句里的break使用詳解
這篇文章主要介紹了Python語法糖之for?else循環(huán)語句里的break使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05Python GUI Tkinter簡單實(shí)現(xiàn)個(gè)性簽名設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了Python GUI Tkinter簡單實(shí)現(xiàn)個(gè)性簽名設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06python獲取當(dāng)前目錄路徑和上級路徑的實(shí)例
下面小編就為大家分享一篇python獲取當(dāng)前目錄路徑和上級路徑的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04Python爬蟲JSON及JSONPath運(yùn)行原理詳解
這篇文章主要介紹了Python爬蟲JSON及JSONPath運(yùn)行原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Python+wxPython實(shí)現(xiàn)批量文件擴(kuò)展名替換
這篇文章主要介紹了如何使用 Python和wxPython創(chuàng)建一個(gè)簡單的圖形界面應(yīng)用程序,使用戶能夠選擇文件夾、輸入要替換的文件類型和新的文件類型,并實(shí)現(xiàn)批量替換文件擴(kuò)展名的功能,有需要的可以參考一下2023-10-10