作業系統:(承上啟下作用,起到硬體與應用程式之間的連線作用(或者介面作用))程序:本質上是一段程式執行的過程,是乙個抽象的概念。
程序的目的就是切換,也就是程式a與程式b矛盾時,可以切換執行,提高cpu的效率。
程序包括三部分:程式,資料集,程式控制塊三個部分。
程式是乙個實體,程序是乙個抽象。資料集相當於輸入。程式控制塊用於切換時,記錄上乙個程序執行到哪等資訊。
說道切換,可以是乙個程序遇到io操作的時候,執行切換(因為io時,cpu空閒);也可以根據時間序列切換等等。
如果只有乙個cpu,程序切換只是實現併發(感覺看起來一起執行,比如既可以上網,也可以聽歌,實際上不是同時執行),
並行至少需要多核(多個cpu).這樣假如兩個cpu同時對應4個任務,這樣就既有並行也有併發。
執行緒:有了程序後,可以實現一邊玩遊戲一邊聽**了。假設乙個文字程式,當鍵盤輸入的同時,需要螢幕顯示,並且同時燒錄到磁碟中。
如果只是用乙個程序的話,只能安順序執行,也就是說鍵盤輸入的同時,螢幕上是看不到的,要等輸入完。
因此需要多程序,但是乙個程式就這樣分了,搞得跟多個程式似的,並且多程序切換過程會降低效率。
執行緒其實可以理解為乙個程序中微程序,它共享乙個程序中的資源集,執行緒的切換也比程序的切換省事。比如扣扣,既可以一邊聊天,
又可以一邊接收郵箱資訊。它們共享乙個使用者的資訊,狀態什麼的。
程序與執行緒區別:
1.乙個程式至少有乙個程序,乙個程序至少有乙個執行緒。(程序可以理解成執行緒的容器)
2.程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享(乙個程序)記憶體,從而極大地提高了程式的執行效率
3.執行緒是最小的執行單元,程序是最小的資源單位(作業系統分資源最小分發程序)。執行緒不可能脫離程序獨立存在
等等下面看兩個簡單的多執行緒例子:
1view codeimport
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............
")
1view code'''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.................
")
多執行緒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...