使用佇列讓執行緒同步

2021-07-05 02:17:43 字數 2311 閱讀 2858

__author__ = 'll_ying'

'''python中的queue物件提供對執行緒同步的支援。使用queue物件可以實現多生產者和多消費者形成先進先出的佇列。

每個生產者將資料一次存入佇列,而每個消費者依次從佇列中取出資料。

'''importthreading

importqueue # python2中是queue模組

queue = queue.queue()

classproducer(threading.thread):

def__init__(self

, threadingname):

threading.thread.__init__(self

, name=threadingname)

defrun(self):

globalqueue

queue.put(self.getname())

print(self.getname(),

'get'

, self.getname(),

'from queue')

classconsumer(threading.thread):

def__init__(self

, threadingname):

threading.thread.__init__(self

, name=threadingname)

defrun(self):

globalqueue

print(self.getname(),

'get'

, queue.get(),

'from queue')

plist =

clist =

foriinrange(10):

p = producer('producer' + str(i))

foriinrange(10):

c = consumer('consumer' + str(i))

foriinplist:

i.start()

i.join()

foriinclist:

i.start()

i.join()

# 輸出為

# producer0 get producer0 from queue

# producer1 get producer1 from queue

# producer2 get producer2 from queue

# producer3 get producer3 from queue

# producer4 get producer4 from queue

# producer5 get producer5 from queue

# producer6 get producer6 from queue

# producer7 get producer7 from queue

# producer8 get producer8 from queue

# producer9 get producer9 from queue

# consumer0 get producer0 from queue

# consumer1 get producer1 from queue

# consumer2 get producer2 from queue

# consumer3 get producer3 from queue

# consumer4 get producer4 from queue

# consumer5 get producer5 from queue

# consumer6 get producer6 from queue

# consumer7 get producer7 from queue

# consumer8 get producer8 from queue

# consumer9 get producer9 from queue

執行緒程式設計 同步佇列

我們經常會採用生產者 消費者關係的兩個執行緒來處理乙個共享緩衝區的資料。例如一 個生產者執行緒接受使用者資料放入乙個共享緩衝區裡,等待乙個消費者執行緒對資料取出處理。但是如果緩衝區的太小而生產者和消費者兩個非同步執行緒的速度不同時,容 易出現乙個執行緒等待另乙個情況。為了盡可能的縮短共享資源並以相同...

多執行緒和同步佇列

最近要割接個專案,要把另外乙個公司的資料庫裡的一張表倒到我們庫里,資料有一億三千多萬吧。正號也符合生產者和消費者的狀況。以前用過點執行緒池和同步佇列,寫個例子,讓大家拍磚。不多說了,直接上 1.執行緒池 public class threadpool override public void run...

使用Event同步執行緒

win32寫多執行緒的時候經常需要執行緒同步,同步的方法很多,效率也不一樣,這裡介紹一種event同步物件。建立乙個mfc基於dialog的工程,介面如圖 執行緒部分 全部為全域性變數和函式 const int max thread 3 handle hevent null handle to ev...