import threading
import time
def thread_test(thread_name, value):
time.sleep(value)
print(thread_name + " complete...")
print("program start ....")
# 建立3個子執行緒
th1 = threading.thread(target=thread_test, args=("th1", 5,))
th2 = threading.thread(target=thread_test, args=("th2", 8,))
th3 = threading.thread(target=thread_test, args=("th3", 3,))
threads = [th1, th2, th3]
for th in threads:
th.start()
for th in threads:
th.join() # 不可與 start() 在乙個迴圈裡使用,否則會變成單執行緒
print("program stop ....")
""" 執行結果
program start ....
th3 complete...
th1 complete...
th2 complete...
program stop ....
"""
關於:join()方法,假設有兩個執行緒:a、b。當a執行緒呼叫b執行緒的join()方法後,a執行緒會被阻塞,直到b執行緒執行終結a執行緒才會繼續執行。這就是為什麼使用迴圈結構同時啟動多個執行緒時,start() 不能與 join() 連用的原因。
import threading
import time
class threadtest(threading.thread):
def __init__(self):
super().__init__()
# ...
def run(self):
time.sleep(5)
print(self.name + " complete...")
print("program start ....")
# 建立3個子執行緒
th1 = threadtest()
th2 = threadtest()
th3 = threadtest()
threads = [th1, th2, th3]
for th in threads:
th.start()
for th in threads:
th.join() # 不可與 start() 在乙個迴圈裡使用
print("program stop ....")
""" 執行結果,說明,因為3個子執行緒是同時啟動,執行時間也一樣,因此停止時間受系統排程
影響,會有些微差。每次執行列印的結果可能不同。
program start ....
thread-3 complete...
thread-2 complete...
thread-1 complete...
program stop ....
"""
# 建立乙個執行緒物件:
th = threading.thread(target=func)
# 屬性
name:只用於識別的字串。它沒有語義。多個執行緒可以賦予相同的名稱。 初始名稱由建構函式設定。
print(th.name)
th.name = "th-1"
# 舊式語法
print(th.getname())
th.setname("th-1")
daemon:乙個表示這個執行緒是不是守護執行緒的布林值(是(true)、否(false))。一定要在呼叫 start() 前設定好,不然會丟擲 runtimeerror 。初始值繼承於建立執行緒;主線程不是守護執行緒,因此主線程建立的所有執行緒預設都是 daemon = false。
print(th.daemon)
th.daemon = true
# 舊式語法
print(th.isdaemon())
th.setdaemon(true)
# 方法
th.is_alive(),返回執行緒是否存活,當 run() 方法剛開始直到 run() 方法剛結束,這個方法返回 true
threading.active_count(),返回當前存活的 thread 物件的個數
python 多執行緒thread
python通過thread模組支援多執行緒,語法也很簡潔,現在通過乙個例項來看一下python中的多執行緒 import thread import time 保證只額外啟動乙個執行緒 isrunning false 啟動的時間控制,測試時間是23點44分,所以定的是這個時間,可以用於指定定時任務...
Python多執行緒Thread
import threading import time import random def worker name print name 開始執行.n 0 while true print name 輸出 str n n n 1 t random.randint 0,5 print name 休眠...
python多執行緒使用thread
import sched import threading import time defnew task function,delay time,args 定時任務函式 param function 需要執行的函式 param delay time 延遲多少時間執行 param args 需要給f...