一、執行緒的建立
threading.thread建立乙個執行緒,返回乙個物件,用變數接收
變數.start啟動執行緒
# -*- coding:utf-8 -*-
# __author__:
# 2022/5/10
# gil:全域性直譯器鎖,只允許 同一時間只允許1個執行緒進入cpu,所以cpython中沒有並行,是併發
import threading,time
def foo(st):
for i in range(5):
time.sleep(1)
print(st)
# 1、threading.thread建立乙個執行緒,返回乙個物件
# 2、args入參是個元祖,所以括號最後要加上逗號;入參即foo函式的入參
# 3、target是目標函式
t1 = threading.thread(target=foo,args=('消費資料1',))
t2 = threading.thread(target=foo,args=('消費資料2',))
# 啟動執行緒
t1.start()
t2.start()
以上**最終結果是, '消費資料1'和'消費資料2'和換行符,併發進行,執行完後結束
二、阻塞執行緒join
join阻塞父執行緒:在子執行緒沒有執行完成之前,阻塞父執行緒;當子執行緒全都執行完成後,繼續執行父執行緒
# -*- coding:utf-8 -*-
# __author__:
# 2022/5/10
import threading
def foo(st):
for i in range(5):
print(st)
t1 = threading.thread(target=foo,args=('生產資料1',))
t2 = threading.thread(target=foo,args=('生產資料2',))
t1.start()
t2.start()
# join阻塞父執行緒:在子執行緒沒有執行完成之前,阻塞父執行緒;當子執行緒全都執行完成後,繼續執行父執行緒
# 執行.py檔案的時候,.py檔案的**執行相當於主(父)執行緒,兩個建立的t1t2相當於子執行緒
t1.join()
t2.join()
# 父執行緒中的**
print('繼續執行父執行緒')
以上**執行結果是:當t1和t2的併發執行緒結束後,才會執行主線程中的print語句
三、守護執行緒daemon
# -*- coding:utf-8 -*-
# __author__:pansy
# 2022/5/10
import threading
def foo(st):
for i in range(5):
print(st)
t1 = threading.thread(target=foo,args=('消費資料1',))
t2 = threading.thread(target=foo,args=('消費資料2',))
# 當沒有守護執行緒的時候,如果主線程執行完畢,此時子執行緒還沒執行結束,則主線程會等所有子執行緒執行完畢後再結束
# 當有守護執行緒的時候,如果主線程執行完畢,子執行緒還沒執行完畢,則主線程仍會結束,不會等待子執行緒
t1.daemon = true
t2.daemon = true
t1.start()
t2.start()
print('消費資料結束。。。。。')
以上**的結果是:當出現列印'消費資料結束。。。。。'時,表示主線程結束,不會等待子執行緒,此時不會繼續列印'消費資料1'和'消費資料2' 守護執行緒和非守護執行緒
基本概念 示例 非守護執行緒 public class mythread extends thread catch interruptedexception e system.out.println 執行緒 thread.currentthread getname 執行了 i 次 public st...
Python 守護執行緒
python 守護執行緒 如果你想等待子執行緒完成再退出,那就什麼都不用做。或者顯示地呼叫thread.setdaemon false 設定daemon的值為false。新的子執行緒會繼承父執行緒的daemon標誌。整個python會在所有的非守護執行緒退出後才會結束,即程序中沒有非守護執行緒存在的...
python 守護執行緒
一 基礎概念 1 守護執行緒 在主線程 執行結束後,等待其它子執行緒執行結束,守護執行緒結束 2 守護程序 隨著主程序 執行結束,守護程序結束 3 主線程執行結束,它所在的程序執行結束 4 主程序 執行結束,主程序並沒結束,等待其它子程序執行結束並 資源 二 示例 守護執行緒 import time...