threading多執行緒模組

2022-09-06 21:09:19 字數 2877 閱讀 6557

作業系統:(承上啟下作用,起到硬體與應用程式之間的連線作用(或者介面作用))

程序:本質上是一段程式執行的過程,是乙個抽象的概念。

程序的目的就是切換,也就是程式a與程式b矛盾時,可以切換執行,提高cpu的效率。

程序包括三部分:程式,資料集,程式控制塊三個部分。

程式是乙個實體,程序是乙個抽象。資料集相當於輸入。程式控制塊用於切換時,記錄上乙個程序執行到哪等資訊。

說道切換,可以是乙個程序遇到io操作的時候,執行切換(因為io時,cpu空閒);也可以根據時間序列切換等等。

如果只有乙個cpu,程序切換只是實現併發(感覺看起來一起執行,比如既可以上網,也可以聽歌,實際上不是同時執行),

並行至少需要多核(多個cpu).這樣假如兩個cpu同時對應4個任務,這樣就既有並行也有併發。

執行緒:有了程序後,可以實現一邊玩遊戲一邊聽**了。假設乙個文字程式,當鍵盤輸入的同時,需要螢幕顯示,並且同時燒錄到磁碟中。

如果只是用乙個程序的話,只能安順序執行,也就是說鍵盤輸入的同時,螢幕上是看不到的,要等輸入完。

因此需要多程序,但是乙個程式就這樣分了,搞得跟多個程式似的,並且多程序切換過程會降低效率。

執行緒其實可以理解為乙個程序中微程序,它共享乙個程序中的資源集,執行緒的切換也比程序的切換省事。比如扣扣,既可以一邊聊天,

又可以一邊接收郵箱資訊。它們共享乙個使用者的資訊,狀態什麼的。

程序與執行緒區別:

1.乙個程式至少有乙個程序,乙個程序至少有乙個執行緒。(程序可以理解成執行緒的容器)

2.程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享(乙個程序)記憶體,從而極大地提高了程式的執行效率

3.執行緒是最小的執行單元,程序是最小的資源單位(作業系統分資源最小分發程序)。執行緒不可能脫離程序獨立存在

等等下面看兩個簡單的多執行緒例子:

1

import

threading

2import

time34

defmusic():

5print("

begin to listen %s

"%time.ctime())

6 time.sleep(3)

7print("

stop listening %s

" %time.ctime())89

defgame():

10print("

begin to game %s

"%time.ctime())

11 time.sleep(5)

12print("

stop gaming %s

" %time.ctime())

1314

15if

__name__ == '

__main__':

1617 t1 = threading.thread(target=music)

1819 t2 = threading.thread(target=game)

2021 t1.start() #

與lesson2放在上面是一樣的

22t2.start()

2324 t1.join() #

join這個方法是子執行緒物件呼叫的函式,函式的意思是t1這個子線等待結束後,主線程才能走25#

t2.join()

2627

#與join對應的.setdaemon是守護執行緒,比如t1設定為守護執行緒,28#

意思就是t1這個執行緒跟主線程一起退,主線程結束後,它問一下其他非守護執行緒,其他的非守護執行緒也都結束,它結束

2930

print("

ending............

")

view code

1

'''2

執行緒,threading可以開執行緒,裡面例項物件有幾個重要的方法,比如:.start,.join,.setdaemon

3t = threading.thread()

4以上是t的方法(例項化的屬性)

5另外threading模組還有一些方法:

6threading.currentthread() 返回當前的執行緒變數

7threading.enumerate() 返回乙個包含正在執行的執行緒的list.正在執行指執行緒啟動後,結束前。

8threading.activecount() 返回正在執行的執行緒數量,與len(threading.enumerate())有相同的結果

9'''

1011

import threading #

執行緒12

import

time

1314

15def

hi(num, i):

16print("

hello %s

" %num)

17time.sleep(int(i))

1819

20if

__name__ == '

__main__':

2122

#主線程下面開了兩個子執行緒

2324 t1 = threading.thread(target=hi, args=(10,2)) #

例項化乙個執行緒物件,開乙個子執行緒1

25t1.start()

2627 t2 = threading.thread(target=hi, args=(9,7)) #

例項化乙個執行緒物件,開乙個子執行緒2

28t2.start()

2930

print("

ending.................

")

view code

多執行緒threading模組

threading模組是python中專門提供用來做多執行緒的模組。threading中最常用的類是thread。檢視執行緒數量函式 threading.enumerate 檢視執行緒當前名字函式 threading.current thread 以下看乙個簡單的多執行緒程式 encoding ut...

python多執行緒模組 threading使用方法

先來看這段 import threading import time def worker print worker time.sleep 1 return for i in xrange 5 t threading.thread target worker t.start 這段 就使用了多執行緒,...

python多執行緒模組threading學習

本文主要介紹threading模組的使用。1.建立乙個threading.thread類的物件,並在初始化函式 init 中傳入可呼叫物件作為執行目標。初始化函式原型以下是threading.thread類的初始化函式原型 definit self,group none,target none,na...