多執行緒類似於同時執行多個不同程式,多執行緒執行有如下優點:
執行緒在執行過程中與程序還是有區別的。每個獨立的執行緒有乙個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。
每個執行緒都有他自己的一組cpu暫存器,稱為執行緒的上下文,該上下文反映了執行緒上次執行該執行緒的cpu暫存器的狀態。
指令指標和堆疊指標暫存器是執行緒上下文中兩個最重要的暫存器,執行緒總是在程序得到上下文中執行的,這些位址都用於標誌擁有執行緒的程序位址空間中的記憶體。
開始學習python執行緒
python中使用執行緒有兩種方式:函式或者用類來包裝執行緒物件。
函式式:呼叫thread模組中的start_new_thread()函式來產生新執行緒。語法如下:
thread.start_new_thread ( function, args[, kwargs] )引數說明:
importthread
import
time
#為執行緒定義乙個函式
defprint_time( threadname, delay):
count =0
while count < 5:
time.sleep(delay)
count += 1
"%s: %s
" %( threadname, time.ctime(time.time()) )
#建立兩個執行緒
try:
thread.start_new_thread( print_time, (
"thread-1
", 2, ) )
thread.start_new_thread( print_time, (
"thread-2
", 4, ) )
except
:
"error: unable to start thread
"while 1:
pass
執行緒模組
python通過兩個標準庫thread和threading提供對執行緒的支援。thread提供了低階別的、原始的執行緒以及乙個簡單的鎖。
thread 模組提供的其他方法:
除了使用方法外,執行緒模組同樣提供了thread類來處理執行緒,thread類提供了以下方法:
使用threading模組建立執行緒
使用threading模組建立執行緒,直接從threading.thread繼承,然後重寫__init__方法和run方法:
importthreading
import
time
exitflag =0
class mythread (threading.thread): #
繼承父類threading.thread
def__init__
(self, threadid, name, counter):
threading.thread.
__init__
(self)
self.threadid =threadid
self.name =name
self.counter =counter
def run(self): #
把要執行的**寫到run函式裡面 執行緒在建立後會直接執行run函式
"starting
" +self.name
print_time(self.name, self.counter, 5)
"exiting
" +self.name
defprint_time(threadname, delay, counter):
while
counter:
ifexitflag:
thread.exit()
time.sleep(delay)
"%s: %s
" %(threadname, time.ctime(time.time()))
counter -= 1
#建立新執行緒
thread1 = mythread(1, "
thread-1
", 1)
thread2 = mythread(2, "
thread-2
", 2)
#開啟執行緒
thread1.start()
thread2.start()
"exiting main thread
"
集訓第九天
今天就看了乙個迪傑斯特拉演算法,他的方法就是從乙個頂點出發,找出這個到與它相關頂點的所有路徑,然後在找出其中最小的,作為基量,一次類推 如下 include define inf 0x7fffffff define maxn 50 int matrix maxn maxn void dijkstra...
開課第九天
畫布 1今天是開課第九天,上午講了關於方法的題,下午講了新知識,嗯,今天有點熱,下面就是本寶寶今天的收穫 1 過載 方法名相同,引數列表不同叫做過載,和返回值型別無關。過載方法名必須一致,引數列表不同,和返回值型別無關。引數列表不同 個數不同,順序不同,型別不同 方法過載的時候編譯器會自動找到最適合...
學習第九天
怎麼沒有題面?我怎麼知道?換個鏈結吧!向洛谷勢力低頭 我們畫一下這個小螞蟻走出來的圖形,我們就會發現,是乙個類似長城的形狀 這個題,求最大值,我們應該能很容易想到用動態規劃 那麼對於乙個路徑圍成的圖形,我們需要描述的是它的位置和形狀,所以這顯然是個高維的dp 位置很好描述,但是形狀太複雜了,我們怎麼...