Python之threading模組簡單使用

2021-09-20 20:00:31 字數 3584 閱讀 7704

下面的**來自《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

importthreading

fromtimeimportsleep, 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))

foriinnloops:

t = threading.thread(target=loop,

args=(i, loops[i]))

foriinnloops:

threads[i].start()

foriinnloops:

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 1doneat: wed sep 23 09:12:50 2015

loop 0doneat: 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 的形...