国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python 多線程重啟方法

2020-02-16 01:12:37
字體:
來源:轉載
供稿:網友

python 多線程程序運行中,會出現由于異常而導致某線程停止的情況,為了保證程序的穩定運行,需要自動重啟down掉的線程.

python Threading類有一個setName()的方法,可以為線程設置名字。

threading.enumerate()可以獲取當前的線程對象。

自動重啟線程的思路如下:

1.使用setName()每個線程設置名字;

2.在初始化運行時使用threading.enumerate()獲取當前所有線程對象,保存為初始線程組;

3.隔一段時間使用threading.enumerate()獲取當前所有線程對象,與初始線程組對比,如果某個name缺失,則重新start。

下面舉個例子:

#coding:utf-8import threadinglist_ip=['1.1.1.1','2.2.2.2','3.3.3.3'] #一組ip列表def printIP(ip):  print ip#每180s獲取當前線程名,并跟初始線程組比較,某一線程停止后自動運行def checkThread(sleeptimes=180,initThreadsName=[]):  for i in range(0,10080):#循環運行    nowThreadsName=[]#用來保存當前線程名稱    now=threading.enumerate()#獲取當前線程名    for i in now:      nowThreadsName.append(i.getName())#保存當前線程名稱    for ip in initThreadsName:      if ip in nowThreadsName:        pass #當前某線程名包含在初始化線程組中,可以認為線程仍在運行      else:        print '==='+ip,'stopped,now restart'        t=threading.Thread(target=printIP,args=(ip,))#重啟線程        t.setName(ip)#重設name        t.start()    time.sleep(sleeptimes)#隔一段時間重新運行,檢測有沒有線程downif __name__ == '__main__':  threads=[]  initThreadsName=[]#保存初始化線程組名字  for ip in list_ip:    t=threading.Thread(target=printIP,args=(ip,))    t.setName(ip)    threads.append(t)  for t in threads:    t.start()  init=threading.enumerate()#獲取初始化的線程對象  for i in init:    initThreadsName.append(i.getName())#保存初始化線程組名字  check=threading.Thread(target=checkThread,args=(180,initThreadsName))#用來檢測是否有線程down并重啟down線程  check.setName('Thread:check')  check.start()

以上這篇python 多線程重啟方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郧西县| 台北市| 岢岚县| 乡城县| 闽侯县| 虞城县| 华阴市| 凭祥市| 海门市| 平果县| 合作市| 延津县| 龙海市| 台中县| 牡丹江市| 阿克苏市| 东港市| 克什克腾旗| 花莲市| 大连市| 石台县| 阿荣旗| 五大连池市| 包头市| 定结县| 盱眙县| 安仁县| 承德县| 青铜峡市| 沁源县| 漳州市| 桂平市| 临澧县| 墨玉县| 江北区| 伊金霍洛旗| 吉首市| 西宁市| 迁安市| 长阳| 都兰县|