91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

對python 多線程中的守護線程與join的用法詳解

發布時間:2020-09-12 03:00:05 來源:腳本之家 閱讀:174 作者:thn_sweety 欄目:開發技術

多線程:在同一個時間做多件事

守護線程:如果在程序中將子線程設置為守護線程,則該子線程會在主線程結束時自動退出,設置方式為thread.setDaemon(True),要在thread.start()之前設置,默認是false的,也就是主線程結束時,子線程依然在執行。

thread.join():在子線程完成運行之前,該子線程的父線程(一般就是主線程)將一直存在,也就是被阻塞

實例:

#!/usr/bin/python
# encoding: utf-8
 
 
import threading
from time import ctime,sleep
 
def func1():
 count=0
 while(True):
  sleep(1)
  print 'fun1 ',count
  count = count+1
 
def func2():
 count=0
 while(True):
  sleep(2)
  print 'fun2 ',count
  count = count+1
 
threads = []
t1 = threading.Thread(target=func1)
threads.append(t1)
t2 = threading.Thread(target=func2)
threads.append(t2)
 
if __name__ == '__main__':
 for t in threads:
  t.setDaemon(True)
  t.start()

上面這段程序執行后,將不會有任何輸出,因為子線程還沒來得及執行,主線程就退出了,子線程為守護線程,所以也就退出了。

修改后的程序:

#!/usr/bin/python
# encoding: utf-8
 
 
import threading
from time import ctime,sleep
 
def func1():
 count=0
 while(True):
  sleep(1)
  print 'fun1 '+str(count)
  count = count+1
 
def func2():
 count=0
 while(True):
  sleep(2)
  print 'fun2 '+str(count)
  count = count+1
 
threads = []
t1 = threading.Thread(target=func1)
threads.append(t1)
t2 = threading.Thread(target=func2)
threads.append(t2)
 
if __name__ == '__main__':
 for t in threads:
  t.setDaemon(True)
  t.start()
 t.join()

可以按照預期執行了,主要join的調用要加在循環外,不然程序只會執行第一個線程。

print 的部分改成+,是為了避免輸出結果中出現類似fun1 fun2 49 這種情況,這是由于程序執行太快,用‘,'間隔相當于執行了兩次print ,在這期間另一個線程也執行了print,所以導致了重疊。

以上這篇對python 多線程中的守護線程與join的用法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

珠海市| 乌鲁木齐县| 会昌县| 乌兰浩特市| 临海市| 方正县| 南召县| 铁岭县| 宁蒗| 攀枝花市| 黄梅县| 平山县| 合川市| 阜平县| 象州县| 耿马| 大丰市| 行唐县| 崇仁县| 苍梧县| 读书| 海城市| 葫芦岛市| 宣威市| 巴马| 冀州市| 望奎县| 甘洛县| 缙云县| 舒城县| 滁州市| 岚皋县| 黎川县| 鹤岗市| 师宗县| 衡山县| 延寿县| 南涧| 乡城县| 句容市| 措美县|