Python實現(xiàn)保證只能運行一個腳本實例
保證只能運行一個腳本實例,方法是程序運行時監(jiān)聽一個特定端口,如果失敗則說明已經(jīng)有實例在跑。
使用裝飾器實現(xiàn),便于重用
import functools
def just_one_instance(func):
'''
裝飾器
如果已經(jīng)有實例在跑則退出
: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]
在腳本的主函數(shù)上使用:
[code]
@just_one_instance
main():
do sth.
相關(guān)文章
python協(xié)程之yield和yield?from實例詳解
Python在并發(fā)處理上不僅提供了多進程和多線程的處理,還包括了協(xié)程,下面這篇文章主要給大家介紹了關(guān)于python協(xié)程之yield和yield?from的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-12-12Python語法糖for?else循環(huán)語句里的break使用詳解
這篇文章主要介紹了Python語法糖之for?else循環(huán)語句里的break使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05Python GUI Tkinter簡單實現(xiàn)個性簽名設(shè)計
這篇文章主要為大家詳細介紹了Python GUI Tkinter簡單實現(xiàn)個性簽名設(shè)計,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06Python+wxPython實現(xiàn)批量文件擴展名替換
這篇文章主要介紹了如何使用 Python和wxPython創(chuàng)建一個簡單的圖形界面應用程序,使用戶能夠選擇文件夾、輸入要替換的文件類型和新的文件類型,并實現(xiàn)批量替換文件擴展名的功能,有需要的可以參考一下2023-10-10