下面的**來自《python核心程式設計》(第二版)一書。
threading模組物件
說明thread
表示乙個執行緒的執行的物件
lock
鎖原語物件(跟thread模組裡的鎖原語物件相同)
rlock
可重入鎖物件。使單執行緒可以再次獲得已經獲得了的鎖(遞迴鎖定)
condition
條件變數物件能讓乙個執行緒停下來,等待其他執行緒滿足了某個「條件」。如,狀態的改變或值得改變
event
通用的條件變數,多個執行緒可以等待某個事件的發生,在事件發生後,所有的執行緒都會被啟用
semaphore
為等待鎖的執行緒提供乙個類似「等候室」的結構
boundedsemaphore
與semaphore類似,只是它不允許超過初始值
timer
與thread相似,只是它要等待一段時間後才開始執行
用thread類,我們可以用多種方法來建立執行緒。一般有三種常見的方法,分別為:
+ 建立乙個thread的例項,傳給它乙個函式
+ 建立乙個thread的例項,傳給它乙個可呼叫的類物件
+ 從thread派生出乙個子類,建立乙個這個子類的例項
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# cat mtsleep3.py
#!/usr/bin/env python
import
threading
from
time
import
sleep
, ctime
loops = [4, 2]
def loop(nloop, nsec):
print
'start loop'
, nloop,
'at:'
, ctime()
sleep
(nsec)
print
'loop'
, nloop,
'done at:'
, ctime()
def main():
print
'starting at:'
, ctime()
threads =
nloops = range(len(loops))
for
i
in
nloops:
t = threading.thread(target=loop,
args=(i, loops[i]))
for
i
in
nloops:
threads[i].start()
for
i
in
nloops:
threads[i].
join
()
print
'all done at:'
, ctime()
if
__name__ ==
'__main__'
:
main()
所有的執行緒都建立了之後,再一起呼叫start()函式啟動,而不是建立乙個啟動乙個。而且,不用再管理一堆鎖(分配鎖、獲得鎖、釋放鎖、檢查鎖的狀態等),只要簡單地對每個執行緒呼叫join()函式就可以了。join()函式會等到執行緒結束,或者在給了timeout引數的時候,等到超時為止。
執行結果為:
1
2
3
4
5
6
7
# python mtsleep3.py
starting at: wed sep 23 09:12:48 2015
start loop 0 at: wed sep 23 09:12:48 2015
start loop 1 at: wed sep 23 09:12:48 2015
loop 1
done
at: wed sep 23 09:12:50 2015
loop 0
done
at: wed sep 23 09:12:52 2015
all done at: wed sep 23 09:12:52 2015
多執行緒python
threading
python中的執行緒使用 threading模組
最近又用到了python中的多執行緒程式設計,前段時間使用並學習過,但是由於長時間不用,慢慢就忘記怎麼用了,畢竟對執行緒的使用還不是很熟練,現在總結一下,記錄下來,加深一下學習的印象。python中關於執行緒,主要有兩個模組thread和threading,其中thread的模組已不建議使用,因為t...
11 2 Python多執行緒threading
分程序設定 工具 threading包 1 先寫需要分程序執行的函式或者類 defmaigic pass 2 例項化threading,得到新的程序 threadone threading.thread target maigic 此時還可以接受arg引數import threading impor...
Python3併發程式設計之threading模組
建立執行緒物件 threading.thread 引數 引數 描述group none 該類中的待擴充套件引數。target none 目標函式,即被開闢執行緒的執行任務。預設值為none,表示什麼都不執行。name none 該執行緒的名稱。在預設情況下,執行緒的唯一名稱以 thread n 的形...