Python 多執行緒7 執行緒通訊

2022-05-31 21:03:11 字數 814 閱讀 6729

很多時候,執行緒之間會有互相通訊的需要。常見的情形是次要執行緒為主要執行緒執行特定的任務,在執行過程中需要不斷報告執行的進度情況。前面的條件變數同步已經涉及到了執行緒間的通訊(threading.condition的notify方法)。更通用的方式是使用threading.event物件。

threading.event可以使乙個執行緒等待其他執行緒的通知。其內建了乙個標誌,初始值為false。執行緒通過wait()方法進入等待狀態,直到另乙個執行緒呼叫set()方法將內建標誌設定為true時,event通知所有等待狀態的執行緒恢復執行。還可以通過isset()方法查詢envent物件內建狀態的當前值。

import threading

import random

import time

class mythread(threading.thread):

def __init__(self,threadname,event):

threading.thread.__init__(self,name=threadname)

self.threadevent = event

def run(self):

print "%s is ready" % self.name

self.threadevent.wait()

print "%s run!" % self.name

sinal = threading.event()

for i in range(10):

t = mythread(str(i),sinal)

t.start()

sinal.set()

執行緒通訊,多執行緒

多執行緒 thread handler thread處理一些複雜的業務邏輯 耗時的事情 handler在主線程中接收訊息的乙個物件 mhandler.sendmessage msg 傳送乙個訊息物件 mhandler.sendemptymessage what 傳送空訊息,只有what沒有obj m...

多執行緒 執行緒通訊

總結 今天小鹹兒來講解乙個好玩的事,那就是執行緒之間該如何通訊,執行緒通訊之後又會出現什麼問題?先來一張導圖來看看執行緒通訊的分布?疑問 如果想要執行緒按照使用者自定義的順序執行的話,那該如何操作呢?思考 如果能夠讓執行緒等待先執行的執行緒執行完,再執行不就能達到效果了嗎!果然出現問題之後,就會有對...

多執行緒 執行緒通訊

1.使用wait notify方法實現執行緒之間的通訊 1 有其他執行緒呼叫同乙個物件的notify或者notifyall方法 呼叫notify notifyall方法之前 2 被喚醒之後重新獲得物件的鎖 呼叫notify notifyall方法之後 編寫測試 如下 執行結果 2.管道通訊 管道流主...