Python随心记--线程列队,,import thr
Python随心记--线程列队,,import thr
import threading,timeli = [1,2,3,4,5,6]def pri(): while li: a = li[-1] print(a) time.sleep(1) li.remove(a) try: li.remove(a) except Exception as e: print(a,e)t1 = threading.Thread(target=pri,args=())t1.start()t2 = threading.Thread(target=pri,args=())t2.start()
先进先出
import queue #线程队列 2.7的时候q为大写q = queue.Queue(3) #FIFO 默认 1先进先出 2先进后出 3后进先出q.put(12)q.put(‘hello‘)q.put({‘name‘:‘aaron‘})q.put(123,False) #如果已满就不再加进去while 1: data = q.get() #data = q.get(block = False) print(data) print(‘------------------‘)
先进后出
import queue #线程队列 2.7的时候q为大写q = queue.LifoQueue() #FIFO 默认 1先进先出 2先进后出 3后进先出q.put(12)q.put(‘hello‘)q.put({‘name‘:‘aaron‘})q.put(123,False) #如果已满就不再加进去while 1: data = q.get() print(data) print(‘------------------‘)import queue #线程队列 2.7的时候q为大写q = queue.LifoQueue()q.put(12)q.put(‘hello‘)q.put({‘name‘:‘aaron‘})q.put(123,False) #如果已满就不再加进去print(q.qsize())print(q.empty())print(q.full())print(q.task_done()) #在完成任务之后q.task_done函数向任务已经完成的队列发送一个信号print(q.join())
生成消费者模型:通过一个容器来解决生产者和消费者的强耦合问题
import queue,threading,time,randomq = queue.Queue()def Producter(name): count = 0 while count < 10: print(‘making..............‘) time.sleep(random.randrange(3)) q.put(count) print(‘Producter %s has producter %s baozi。。‘ %(name,count)) count += 1 print(‘ok........‘)def Consumer(name): count = 0 while count < 10: time.sleep(random.randrange(4)) if not q.empty(): data = q.get() print(data) print(‘\033[32;1mConsumer %s has eat %s baozi..\033[0m‘ %(name,count)) else: print(‘no baozi anymore‘) count += 1p = threading.Thread(target=Producter,args=(‘A‘,))c = threading.Thread(target=Consumer,args=(‘B‘,))p.start()c.start()
存在问题版本
import queue,threading,time,randomq = queue.Queue()def Producter(name): count = 0 while count < 10: print(‘making..............‘) time.sleep(random.randrange(3)) q.put(count) print(‘Producter %s has producter %s baozi。。‘ %(name,count)) count += 1 q.task_done() #q.join() print(‘ok........‘)def Consumer(name): count = 0 while count < 10: time.sleep(random.randrange(4)) if not q.empty(): data = q.get() #q.task_done() q.join() print(‘\033[32;1mConsumer %s has eat %s baozi..\033[0m‘ %(name,data)) else: print(‘no baozi anymore‘) count += 1p = threading.Thread(target=Producter,args=(‘A‘,))c1 = threading.Thread(target=Consumer,args=(‘B‘,))c2 = threading.Thread(target=Consumer,args=(‘C‘,))c3 = threading.Thread(target=Consumer,args=(‘D‘,))p.start()c1.start()c2.start()c3.start()
解决问题版本
import queue,threading,time,randomq = queue.Queue()def Producter(name): count = 0 while count < 10: print(‘making..............‘) time.sleep(5) q.put(count) print(‘Producter %s has producter %s baozi。。‘ %(name,count)) count += 1 q.task_done() #q.join() print(‘ok........‘)def Consumer(name): count = 0 while count < 10: time.sleep(random.randrange(4)) print(‘waiting...........‘) q.join() data = q.get() #q.task_done() print(‘\033[32;1mConsumer %s has eat %s baozi..\033[0m‘ %(name,data)) count += 1p = threading.Thread(target=Producter,args=(‘A‘,))c1 = threading.Thread(target=Consumer,args=(‘B‘,))c2 = threading.Thread(target=Consumer,args=(‘C‘,))c3 = threading.Thread(target=Consumer,args=(‘D‘,))p.start()c1.start()c2.start()c3.start()import queue,threading,time,randomq = queue.Queue()def Producter(name): count = 0 while count < 10: print(‘making..............‘) time.sleep(5) q.put(count) print(‘Producter %s has producter %s baozi。。‘ %(name,count)) count += 1 # q.task_done() q.join() print(‘ok........‘)def Consumer(name): count = 0 while count < 10: time.sleep(random.randrange(4)) # q.join() data = q.get() print(‘eating...........‘) time.sleep(4) q.task_done() print(‘\033[32;1mConsumer %s has eat %s baozi..\033[0m‘ %(name,data)) count += 1p = threading.Thread(target=Producter,args=(‘A‘,))c1 = threading.Thread(target=Consumer,args=(‘B‘,))c2 = threading.Thread(target=Consumer,args=(‘C‘,))c3 = threading.Thread(target=Consumer,args=(‘D‘,))p.start()c1.start()c2.start()c3.start()
Python随心记--线程列队
相关内容
- python快速教程,,网上有个人写的pyt
- python 学习,,当退出 Python
- 在linux环境下安装python3.6,,wgethttps:
- Mac中的python2 与 python3 的共存,,【一】下载Xcode
- python中re正则表达式,,1、re匹配的语法r
- s3 api接口的调用,,最近公司使用s3做文
- python+selenium+unnitest写一个完整的登陆的验证,, 1 impor
- -bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file o
- conda create -n AlphaPose2018 python=2.7,,conda crea
- 如何在MacOS的VScode上安装Python3,,由于MacOS上的V
评论关闭