Python守護(hù)進(jìn)程實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了Python守護(hù)進(jìn)程實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
如果你設(shè)置一個(gè)線程為守護(hù)線程,就表示你在說(shuō)這個(gè)線程是不重要的,在進(jìn)程退出的時(shí)候,不用等待這個(gè)線程退出。如果你的主線程在退出的時(shí)候,不用等待那些子線程完成,那就設(shè)置這些線程的daemon屬性。即在線程開(kāi)始(thread.start())之前,調(diào)用setDeamon()函數(shù),設(shè)定線程的daemon標(biāo)志。(thread.setDaemon(True))就表示這個(gè)線程“不重要”。
如果你想等待子線程完成再退出,那就什么都不用做,或者顯示地調(diào)用thread.setDaemon(False),設(shè)置daemon的值為false。新的子線程會(huì)繼承父線程的daemon標(biāo)志。整個(gè)Python會(huì)在所有的非守護(hù)線程退出后才會(huì)結(jié)束,即進(jìn)程中沒(méi)有非守護(hù)線程存在的時(shí)候才結(jié)束。
看下面的例子:
import time import threading def fun(): print "start fun" time.sleep(2) print "end fun" print "main thread" t1 = threading.Thread(target=fun,args=()) #t1.setDaemon(True) t1.start() time.sleep(1) print "main thread end"
結(jié)果:
main thread start fun main thread end end fun
結(jié)論:程序在等待子線程結(jié)束,才退出了。
設(shè)置:setDaemon 為True
import time import threading def fun(): print "start fun" time.sleep(2) print "end fun" print "main thread" t1 = threading.Thread(target=fun,args=()) t1.setDaemon(True) t1.start() time.sleep(1) print "main thread end"
結(jié)果:
main thread start fun main thread end
結(jié)論:程序在主線程結(jié)束后,直接退出了。 導(dǎo)致子線程沒(méi)有運(yùn)行完。
守護(hù)進(jìn)程可以通過(guò)調(diào)用isAlive(), 來(lái)監(jiān)視其他線程是否是存活的。
如果死掉的話就重新建立一個(gè)工作線程,啟動(dòng)起來(lái)(這里要注意不能使用原來(lái)的線程讓它start(),因?yàn)檫@個(gè)線程已經(jīng)結(jié)束了,內(nèi)存中的實(shí)例已經(jīng)釋放掉了,所以使用這個(gè)方法會(huì)報(bào)錯(cuò))。
#coding=utf-8 import time from threading import Thread class ticker(Thread): def run(self): while True: print time.time() if (time.time() > 1470883000): break pass time.sleep(3) pass pass class moniter(Thread): def run(self): while True: global T if (T.isAlive()): print 't is alive' else : print 't is dead' T = ticker() T.start() print 'checking ' time.sleep(5) pass pass T = ticker() T.start() mo = moniter() mo.start()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python全棧之進(jìn)程和守護(hù)進(jìn)程
- python 如何設(shè)置守護(hù)進(jìn)程
- Python 創(chuàng)建守護(hù)進(jìn)程的示例
- python實(shí)現(xiàn)守護(hù)進(jìn)程、守護(hù)線程、守護(hù)非守護(hù)并行
- python使用fork實(shí)現(xiàn)守護(hù)進(jìn)程的方法
- Python如何實(shí)現(xiàn)守護(hù)進(jìn)程的方法示例
- python daemon守護(hù)進(jìn)程實(shí)現(xiàn)
- Python守護(hù)進(jìn)程用法實(shí)例分析
- Python實(shí)現(xiàn)日志備份守護(hù)進(jìn)程的示例
相關(guān)文章
Python語(yǔ)法def語(yǔ)句及復(fù)雜用法實(shí)例探究
在 Python 中,def?是用于定義函數(shù)的關(guān)鍵字,本文將深入介紹def的用法和特點(diǎn),詳細(xì)說(shuō)明如何定義函數(shù)、傳遞參數(shù)、返回值以及更復(fù)雜的用法2024-01-01分享一個(gè)pycharm專業(yè)版安裝的永久使用方法
這篇文章主要介紹了分享一個(gè)pycharm專業(yè)版安裝的永久使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09PyCM多類別混淆矩陣分析python庫(kù)功能使用探究
這篇文章主要為大家介紹了python編寫的PyCM多類混淆矩陣庫(kù),用于多類別混淆矩陣分析,幫助用戶從不同角度評(píng)價(jià)分類模型的表現(xiàn),這些指標(biāo)包括但不限于準(zhǔn)確率、召回率、F1分?jǐn)?shù)、Kappa?統(tǒng)計(jì)量等,支持二分類、多分類及多標(biāo)簽分類問(wèn)題2024-01-01Python實(shí)現(xiàn)監(jiān)控遠(yuǎn)程主機(jī)實(shí)時(shí)數(shù)據(jù)的示例詳解
這篇文章主要為大家詳細(xì)介紹了Python如何使用Socket庫(kù)和相應(yīng)的第三方庫(kù)來(lái)監(jiān)控遠(yuǎn)程主機(jī)的實(shí)時(shí)數(shù)據(jù),比如CPU使用率、內(nèi)存使用率、網(wǎng)絡(luò)帶寬等,感興趣的可以了解一下2023-04-04將pip源更換到國(guó)內(nèi)鏡像的詳細(xì)步驟
這篇文章主要介紹了將pip源更換到國(guó)內(nèi)鏡像的詳細(xì)步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04用Python把csv文件批量修改編碼為UTF-8格式并轉(zhuǎn)為Excel格式的方法
有時(shí)候用excel打開(kāi)一個(gè)csv文件,中文全部顯示亂碼,然后手動(dòng)用notepad++打開(kāi),修改編碼為utf-8并保存后,再用excel打開(kāi)顯示正常,本文將給大家介紹一下用Python把csv文件批量修改編碼為UTF-8格式并轉(zhuǎn)為Excel格式的方法,需要的朋友可以參考下2023-09-09關(guān)于pytorch中網(wǎng)絡(luò)loss傳播和參數(shù)更新的理解
今天小編就為大家分享一篇關(guān)于pytorch中網(wǎng)絡(luò)loss傳播和參數(shù)更新的理解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Python腳本實(shí)現(xiàn)調(diào)用手機(jī)攝像頭
這篇文章主要為大家詳細(xì)介紹了Python如何通過(guò),腳本實(shí)現(xiàn)調(diào)用手機(jī)攝像頭,這樣就能隨時(shí)隨地用電腦偷偷看看男朋友都在干啥了,感興趣的小伙伴可以了解下2025-03-03