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

首頁 > 編程 > Python > 正文

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

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

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

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

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

實例:

#!/usr/bin/python# encoding: utf-8  import threadingfrom 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 threadingfrom 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的用法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汤原县| 枝江市| 怀仁县| 若羌县| 胶南市| 泰顺县| 新化县| 都兰县| 岳西县| 临西县| 昌宁县| 木里| 城步| 霍山县| 平罗县| 莒南县| 商洛市| 祁门县| 潜山县| 垦利县| 洛宁县| 孟津县| 金门县| 宣恩县| 千阳县| 潍坊市| 都安| 江永县| 沿河| 会东县| 阿拉尔市| 彭山县| 闵行区| 手机| 砚山县| 旬邑县| 上蔡县| 天台县| 广宁县| 涟源市| 额尔古纳市|