import threading,queue,time
numproducer=4
nummessages=4
numconsumer=2
dataQueue=queue.Queue()
safeprint=threading.Lock()
def producer(i,dataQueue):
for msg in range(nummessages):
dataQueue.put('[producer id=%d,msg=%d]' %(i,msg))
def consumer(i,dataQueue):
while True:
try:
data=dataQueue.get(block=False)
except queue.Empty:
pass
else:
with safeprint:
print('consumer',i,'get==>',data)
if __name__=='__main__':
for i in range(numconsumer):
thread = threading.Thread(target=consumer,args=(i,dataQueue))
thread.daemon = True
thread.start()
#threads=[]
for i in range(numproducer):
thread = threading.Thread(target=producer,args=(i,dataQueue))
#threads.append(thread)
thread.daemon = True
thread.start()
#for thread in threads: thread.join()
time.sleep(1)
print('main thread exiting')
代码笔记 | 多线程使用queue模块同步访问共享数据
最新推荐文章于 2024-04-21 11:22:37 发布