python執行緒:執行緒的排程-守護執行緒
守護執行緒與普通執行緒寫法上基本麼啥區別,呼叫執行緒物件的方法setdaemon(true),則可以將其設定為守護執行緒。在python中建議使用的是thread.demon = true 使用這個方法可以檢測資料合法性
守護執行緒使用的情況較少,但並非無用,舉例來說,python的垃圾**、記憶體管理等執行緒都是守護執行緒。還有就是在做資料庫應用時候,使用的資料庫連線池,連線池本身也包含著很多後台執行緒,監控連線個數、超時時間、狀態等等。
setdaemon方法的詳細說明:
#屬性進行封裝 以方便對資料傳入值合法性進行判斷
@daemon.setter #
將self._daemonic
defdaemon(self, daemonic):
ifnot
self._initialized:
raise runtimeerror("
thread.__init__() not called")
ifself._started.is_set():
raise runtimeerror("
cannot set daemon status of active thread")
self._daemonic =daemonic
#判斷此執行緒是否是守護執行緒
defisdaemon(self):
return
self.daemon
#通過方法修改daemonic屬性值 不建議使用
defsetdaemon(self, daemonic):
self.daemon = daemonic
1#encoding:utf-82#
author:"richie"3#
date:8/29/20174#
python執行緒:執行緒的排程-守護執行緒56
from threading import
thread,timer
7import
time89
class
mycommon(thread):
1011
defrun(self):
12for i in range(1,5):
13 t = timer(7, self.print_msg, args=(i,))
14t.start()
1516
defprint_msg(self,i):
17print("
執行緒1第
" + str(i) + "
次執行!")
1819
class
mydaemon(thread):
20"""
21守護執行緒不可以在重新new thread
22"""
23def
run(self):
24for i in range(9999999):
25print("
後台執行緒第
" + str(i) + "
次執行!")
26 time.sleep(2)
2728
if__name__ == '
__main__':
29 t1 =mycommon()
30 t2 =mydaemon()
31 t2.deamon = true #
設定為守護執行緒
32t1.start()
33 t2.start()
d:\python\python3.6\python.exe d:/python/pythonprogram/day35/案例分析.py後台執行緒第0次執行!
後台執行緒第1次執行!
後台執行緒第2次執行!
後台執行緒第3次執行!
執行緒1第1次執行!
執行緒1第2次執行!
執行緒1第3次執行!
執行緒1第4次執行!
process finished with exit code 0
從上面的執行結果可以看出:
前台執行緒是保證執行完畢的,後台執行緒還沒有執行完畢就退出了。
實際上:python直譯器判斷程式是否執行結束的標準是所有的前台執執行緒行完畢了,而不管後台執行緒的狀態,因此,在使用後台縣城時候一定要注意這個問題。
Python 守護執行緒
python 守護執行緒 如果你想等待子執行緒完成再退出,那就什麼都不用做。或者顯示地呼叫thread.setdaemon false 設定daemon的值為false。新的子執行緒會繼承父執行緒的daemon標誌。整個python會在所有的非守護執行緒退出後才會結束,即程序中沒有非守護執行緒存在的...
python 守護執行緒
一 基礎概念 1 守護執行緒 在主線程 執行結束後,等待其它子執行緒執行結束,守護執行緒結束 2 守護程序 隨著主程序 執行結束,守護程序結束 3 主線程執行結束,它所在的程序執行結束 4 主程序 執行結束,主程序並沒結束,等待其它子程序執行結束並 資源 二 示例 守護執行緒 import time...
主線程 守護執行緒 非守護執行緒
main,但不是守護執行緒。是指在程式執行的時候在後台提供一種通用服務的執行緒。如gc。也叫使用者執行緒,由使用者建立。主線程和守護執行緒一起銷毀 主線程和非守護執行緒互不影響。例如 package com.peng.thread 1 使用者執行緒 非守護執行緒 有主線程建立 2 守護執行緒和主線程...