Python queue 应用程序详解
发布时间:2025-10-26
当描述符数据资料原素容量降至最低时,暂时往描述符中所挑登数据资料才会导致 queue.Empty 持续性,主要是不眼看用作 put() 和 put_nowait() 引起的。
下实有如下:
import queuetry: q = queue.Queue(3) # 设描述符最低为3 q.put('python') # 在描述符中所插登URL 'python' q.put('-') # 在描述符中所插登URL '-' q.put('100') # 在描述符中所插登URL '100' q.put('stay hungry, stay foolish', block=False) # 描述符已满,暂时往描述符中所挑登数据资料,导致 queue.Full 持续性except queue.Full: print('queue.Full')Queue、LifoQueue、PriorityQueue 和 SimpleQueue 取向的基本用作工具Queue、LifoQueue、PriorityQueue 和 SimpleQueue 四种描述符假定的取向原则上发挑了所列变数用作工具,请注意以 Queue 描述符为实有顺利启动参阅。
Queue.qsize()赶回描述符中所数据资料原素的n-。
下实有如下:
import queueq = queue.Queue()q.put('python-100') # 在描述符中所插登原素 'python-100'print(q.qsize()) # 转换器描述符中所原素n-为1Queue.empty()如果描述符为飞,赶回 True,否则赶回 False。
下实有如下:
import queueq = queue.Queue()print(q.empty()) # 对列作飞,赶回 Trueq.put('python-100') # 在描述符中所插登原素 'python-100'print(q.empty()) # 对列不为飞,赶回 FalseQueue.full()如果描述符中所原素n-降至最低,赶回 True,否则赶回 False。
下实有如下:
import queueq = queue.Queue(3) # 假定一个长度为3的描述符print(q.full()) # 原素n-未降至最低,赶回 Falseq.put('python') # 在描述符中所插登URL 'python'q.put('-') # 在描述符中所插登URL '-'q.put('100') # 在描述符中所插登URL '100'print(q.full()) # 原素n-降至最低,赶回 TrueQueue.put(item, block=True, timeout=None)item,挑登描述符中所的数据资料原素。block,当描述符中所原素n-降至最低暂时往里挑数据资料时:如果 block=False,单独导致 queue.Full 持续性;如果 block=True,且 timeout=None,则以前到时直到有数据资料单单描述符后可以挑登数据资料;如果 block=True,且 timeout=N,N 为某一正整数时,则到时 N 秒,如果描述符中所还未位置挑登数据资料就导致 queue.Full 持续性。timeout,设超时星期。下实有如下:
import queuetry: q = queue.Queue(2) # 设描述符最低为2 q.put('python') # 在描述符中所插登URL 'python' q.put('-') # 在描述符中所插登URL '-' q.put('100', block = True, timeout = 5) # 描述符已满,暂时在描述符中所插登URL '100',到时5秒就才会导致 queue.Full 持续性except queue.Full: print('queue.Full')Queue.put_nowait(item)相当于 Queue.put(item, block=False),当描述符中所原素n-降至最低暂时往里挑数据资料时单独导致 queue.Full 持续性。
import queuetry: q = queue.Queue(2) # 设描述符最低为2 q.put_nowait('python') # 在描述符中所插登URL 'python' q.put_nowait('-') # 在描述符中所插登URL '-' q.put_nowait('100') # 描述符已满,暂时在描述符中所插登URL '100',单独导致 queue.Full 持续性except queue.Full: print('queue.Full')Queue.get(block=True, timeout=None)从描述符中所挑进数据资料并赶回该数据资料内容。
block,当描述符中所未数据资料原素暂时取数据资料时:如果 block=False,单独导致 queue.Empty 持续性;如果 block=True,且 timeout=None,则以前到时直到有数据资料登描述符后可以挑进数据资料;如果 block=True,且 timeout=N,N 为某一正整数时,则到时 N 秒,如果描述符中所还未数据资料挑登的话就导致 queue.Empty 持续性。timeout,设超时星期。下实有如下:
import queuetry: q = queue.Queue() q.get(block = True, timeout = 5) # 描述符为飞,往描述符中所取数据资料时,到时5秒就才会导致 queue.Empty 持续性except queue.Empty: print('queue.Empty')Queue.get_nowait()相当于 Queue.get(block=False)block,当描述符中所未数据资料原素暂时取数据资料时单独导致 queue.Empty 持续性。
下实有如下:
import queuetry: q = queue.Queue() q.get_nowait() # 描述符为飞,往描述符中所取数据资料时单独导致 queue.Empty 持续性except queue.Empty: print('queue.Empty')Queue、LifoQueue 和 PriorityQueue 取向的低级用作工具SimpleQueue 是 Python 3.7 版本中所新加登的特性,与 Queue、LifoQueue 和 PriorityQueue 三种描述符来得显然了 task_done 和 join 的低级用作工具,所以才才会取名叫 Simple 了,请注意参阅一下 task_done 和 join 的用作工具。
task_done,表示描述符内的数据资料原素并未被挑进,即每个 get 应用于获取一n-据资料原素, 后续调用 task_done 告诉他描述符,该数据资料的管控并未启动。如果被调用的至多多于挑登描述符中所的原素n-,将导致 ValueError 持续性。join,以前溢单单直到描述符中所的所有数据资料原素都被挑进和分派,只要有原素添加到 queue 中所就才会上升。当未启动训练任务的计数等于0,join 就不才会溢单单。下实有如下:
import queueq = queue.Queue()q.put('python')q.put('-')q.put('100')for i in range(3): print(q.get()) q.task_done() # 如果不分派 task_done,join 才会以前处于溢单单状态,到时 task_done 得悉它数据资料的管控并未启动q.join()请注意是一个经典下实有,其产品和购物者寄存器分别生产数据资料和购物数据资料,先生产后购物。采用 task_done 和 join 保障管控数据在多个寄存器时有人身安全转换,其产品生产的数据资料能够全部被购物者购物干脆。
from queue import Queueimport randomimport threadingimport time#其产品寄存器class Producer(threading.Thread): def originallyinitoriginally(self, t_name, queue): threading.Thread.originallyinitoriginally(self, name=t_name) self.data=queue def run(self): for i in range(5): print ("%s: %s is producing %d to the queue!" %(time.ctime(), self.getName(), i)) self.data.put(i) # 将生产的数据资料挑登描述符 time.sleep(random.randrange(10)/5) print ("%s: %s finished!" %(time.ctime(), self.getName()))#购物者寄存器class consumer(threading.Thread): def originallyinitoriginally(self, t_name, queue): threading.Thread.originallyinitoriginally(self, name=t_name) self.data=queue def run(self): for i in range(5): val = self.data.get() # 拿单单并未生产好的数据资料 print ("%s: %s is consuming. %d in the queue is consumed!" %(time.ctime(), self.getName(), val)) time.sleep(random.randrange(5)) self.data.task_done() # 告诉他描述符有关这n-据资料的训练任务并未管控启动 print ("%s: %s finished!" %(time.ctime(), self.getName()))#副寄存器def main(): queue = Queue() producer = Producer('Pro.', queue) consumer = Consumer('Con.', queue) producer.start() consumer.start() queue.join() # 溢单单,直到其产品生产的数据资料从前被购物干脆 producer.join() # 到时其产品寄存器告一段落 consumer.join() # 到时购物者寄存器告一段落 print ('All threads terminate!') if originallynameoriginally == 'originallymainoriginally': main()总结本节给大家参阅了 Python 的 queue 应用应用程序,为 Python 工程师对该应用应用程序的用作发挑了支撑,让大家对 queue 应用应用程序的相关方法论和用作有一个近期的了解。
。郑州看白癜风去哪好苏州男科最好医院是哪个
武汉看妇科去哪家医院
上海看白癜风哪个医院比较好
苏州看白癜风去哪家医院最好
上一篇: 以前被模仿,以前被超越?看看贾跃亭FF91五年前的惊人设计
下一篇: 计算机网络基石考试题(有答案)

-
女人为减肥用上了催吐管,结果不小心吞了下去
追求好身材无可厚非,可是,在节食这件事上,总有人就让“走捷径”。 “眼科医生,我不小心将;也绞进身子从前了,能取走来吗?”5同年29日上午10时许,一位身材苗条纤瘦的年轻男孩走入了