執行緒佇列,生產者與消費者:
執行緒佇列:
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...