Python 執行緒佇列 生產者與消費者

2021-09-12 14:36:03 字數 1603 閱讀 3608

執行緒佇列,生產者與消費者:

執行緒佇列:

from queue import queue#先進先出佇列

from queue import priorityqueue #優先順序佇列---繼承了queue

from queue import lifoqueue#後進先出

#建立佇列

q = queue(3)

#放資料

q.put('d1')

q.put('d2')

q.put('d3')

print(q.full())#true

print(q.empty())#false

#取資料

q.get()#d1

q.get()#d2

q.get()#d3

print(q.empty())#true

#阻塞# 見程序佇列阻塞

#佇列的優先順序

pq = priorityqueue()

# 任務不要直接put,需要封裝到元組當中。

# 格式:(數字,訊息)

#說明:數字越小優先順序越高。

pq.put((1,'檔案1'))

pq.put((0,'檔案2'))

pq.put((-10,'檔案3'))

pq.put((100,'檔案4'))

# print(pq.get())#(-10, '檔案3')

i = 0

while i生產者與消費者:

from queue import queue

from threading import thread

import time

q = queue(maxsize=10)

#生產者

def cooker(name):

count = 1

while true:

q.put('包子%d'%count)

print('%s---生產了---包子%d'%(name,count))

count +=1

time.sleep(2)

#消費者

def consumer(name):

while true:

print('%s吃了%s'%(name,q.get()))

time.sleep(1)

if __name__ == '__main__':

#廚師1

c1 = thread(target=cooker,args=('劉大廚',))

c1.start()

#廚師2

c2 = thread(target=cooker,args=('李大廚',))

c2.start()

#消費者

guke1 = thread(target=consumer,args=('小明',))

guke1.start()

guke2 = thread(target=consumer,args=('鐵蛋',))

guke2.start()

NSCondition 多執行緒解決生產者消費者問題

import viewcontroller.h inte ce viewcontroller 資料緩衝區 property strong,nonatomic nsmutablearray products 執行緒鎖 property strong,nonatomic nscondition cond...

生產者Confirm訊息與Return訊息機制

訊息的確認,是指生產者投遞訊息後,如果broker收到訊息,則會給我們生產者乙個應答 生產者接收應答,用來確定這條訊息是否正常傳送到broker,這種方式也是訊息的可靠性傳遞的核心保障 channel開啟確認模式 channel.confirmselect 在channel上加監聽 addconfi...

多執行緒 生產者消費者佇列

就以alibaba的筆試題舉例吧。題目大概的意思如下 有乙個籃子,最多容納5個蘋果。有人一直往裡放蘋果。有人一直去蘋果。寫出實現。ali要求不能用concurrent包裡面的東西,所以只能用最簡單的notify和wait。如果可以用concurrent包裡面的東西,還可以用blockingqueue...