在python3中,多執行緒主要使用threading模組
首先,來看乙個單任務模式的例子
importdatetime,time
defeat_hotpot(food):
for i in range(2):
print(datetime.datetime.now().strftime('
%x') + '
' + "
eat
" +str(food))
time.sleep(2) #每一次呼叫耗時2s
defwatch_tv(movie):
for i in range(2):
print(datetime.datetime.now().strftime('
%x') + '
' + "
watch
" +str(movie))
time.sleep(2)#每一次呼叫耗時2s
if__name__ == '
__main__':
eat_hotpot("毛肚
")watch_tv(
"末代皇帝")
print(datetime.datetime.now().strftime('
%x') + '
' + "
吃火鍋,看電視都結束啦~~
")
14:45:35eat 毛肚14:45:37eat 毛肚
14:45:39watch 末代皇帝
14:45:41watch 末代皇帝
14:45:43 吃火鍋,看電視都結束啦~~
#時間都相隔2s,執行完程式,耗時8s
執行的結果如上,可以看出,每呼叫一次耗時2s,整個程式是線性執行的。
接下來我們將程式改造一下:
importthreading
import
datetime,time
defeat_hotpot(food):
for i in range(2):
print(datetime.datetime.now().strftime('
%x') + '
' + "
eat
" +str(food))
time.sleep(2)
defwatch_tv(movie):
for i in range(2):
print(datetime.datetime.now().strftime('
%x') + '
' + "
watch
" +str(movie))
time.sleep(2)
if__name__ == '
__main__':
#建立兩個子執行緒
t1 = threading.thread(target=eat_hotpot,args=('毛肚'
,)) t2 = threading.thread(target=watch_tv,args=('
末代皇帝
',))
#啟動兩個執行緒
t1.start()
t2.start()
#主線程
print(datetime.datetime.now().strftime('
%x') + '
' + "
吃火鍋,看電視都結束啦~~
")
14:49:43eat 毛肚14:49:43watch 末代皇帝
14:49:43 吃火鍋,看電視都結束啦~~ #可以看到eat_hotpot,watch_tv,和主線程都在14:49:43這一時刻同時啟動
14:49:45watch 末代皇帝 #主線程結束後,子執行緒繼續執行
14:49:45 eat 毛肚 #執行完程式,耗時2s
使用threading模組建立多執行緒,最主要是使用thread這個類,建立thread物件後,讓他執行,給個thread代表乙個執行緒,在每個執行緒中讓程式處理不同的任務,這就是多執行緒程式設計
threading.thread(group=none, target=none, name=none, args=(), kwargs={}, *, daemon=none)
target:執行緒呼叫的物件,就是函式名,注意不用寫括號
name:執行緒的名字,預設值為「thread-n「,n是乙個數字。
args:為目標函式傳遞的引數,元組,如果只有乙個引數,需要有逗號
kwargs:為目標函式傳遞的關鍵字引數,字典
另外該模組還有如下的一些方法和屬性
current_thread() #當前執行緒
thread.getname() #
獲取執行緒name
thread.setname() #
設定執行緒name
thread.ident #
獲取執行緒識別符號
thread.is_alive()
thread.isalive()
#判斷執行緒是否啟用
C 多執行緒 一 多執行緒的相關概念
什麼是程序?當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。什麼是執行緒?執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的函式。什麼是多執行緒...
(一)多執行緒之執行緒理論
一 什麼是執行緒 在傳統作業系統中,每個程序有乙個位址空間,而且預設就有乙個控制線程。執行緒顧名思義,就是一條流水線工作的過程 流水線的工作需要電源,電源就相當於cpu 而一條流水線必須屬於乙個車間,乙個車間的工作過程是乙個程序,車間負責把資源整合到一起,是乙個資源單位,而乙個車間內至少有一條流水線...
c 11 多執行緒一 多執行緒應用
c 98標準中並沒有執行緒庫的存在,而在c 11中終於提供了多執行緒的標準庫,提供了管理執行緒 保護共享資料 執行緒間同步操作 原子操作等類。多執行緒庫對應的標頭檔案是 include,類名為std thread。例子 include include void function 1 intmain ...