Python 多執行緒 threading

2021-10-12 06:49:35 字數 2433 閱讀 3864

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...