首页 > 其他 > 详细

queue

时间:2020-02-03 00:15:46      阅读:87      评论:0      收藏:0      [点我收藏+]

 

队列Queue、栈LifoQueue、优先级队列PriorityQueue

队列:队列是先进先出。

栈:栈是先进后出。

优先级队列:优先队列是根据优先级判定谁先出来,如果优先级一样,则按数据的ascii码输出。

import queue

q = queue.PriorityQueue()

q.put((10, ‘b‘))

q.put((30, ‘a‘))

q.put((13, ‘f‘))

q.put((-3, ‘k‘))

q.put((-3.5, ‘c‘))

q.put((-7.5, ‘h‘))

print(q.get())

print(q.get())

print(q.get())

print(q.get())

print(q.get())

print(q.get())

 

 

 

 

Queue介绍:

Queue的种类:

FIFO:

 Queue.Queue(maxsize=0)

FIFO即First in First Out,先进先出。Queue提供了一个基本的FIFO容器,使用方法很简单,maxsize是个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。如果maxsize小于或者等于0,队列大小没有限制。

 LIFO:

Queue.LifoQueue(maxsize=0)

LIFO即Last in First Out,后进先出。与栈的类似,使用也很简单,maxsize用法同上

priority:

class Queue.PriorityQueue(maxsize=0)

构造一个优先队列。maxsize用法同上。

 

 

 

 

基本方法:

  Queue.Queue(maxsize=0)   FIFO, 如果maxsize小于1就表示队列长度无限

       Queue.LifoQueue(maxsize=0)   LIFO, 如果maxsize小于1就表示队列长度无限

       Queue.qsize()   返回队列的大小 

       Queue.empty()   如果队列为空,返回True,反之False 

       Queue.full()   如果队列满了,返回True,反之False

       Queue.get([block[, timeout]])   读队列,timeout等待时间 

       Queue.put(item, [block[, timeout]])   写队列,timeout等待时间 

       Queue.queue.clear()   清空队列

Queue.get_nowait()   立即取出一个元素,不等待

Queue.put_nowait()  立即放入一个元素,不等待

 

 

 

 

exit(0)与exit(1),return三者区别(详解)

exit(0):正常运行程序并退出程序;

exit(1):非正常运行导致退出程序;

return():返回函数,若在主函数中,则会退出函数并返回一值。

详细说:

  1. return返回函数值,是关键字;  exit 是一个函数。

  2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。

  3. return是函数的退出(返回);exit是进程的退出。

  4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。

  5. return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是 0 为正常退出,非0 为非正常退出。

  6. 非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。

 

 

 

 

进程终止有5种方法:

1正常终止

(1)从main函数返回

(2)调用exit

(3)调用_exit

2异常终止

(1)调用abort

(2)由一个信号来终止 

exit和_exit就是用来正常终止一个进程的,主要区别是_exit会立刻进入内核,而exit先执行一些清除工作(包括执行各种终止处理程序,关闭所有标准I/O等,一旦关闭了IO,例如Printf等函数就不会输出任何东西了),然后才进入内核。这两个函数会对父子进程有一定的影响,当用vfork创建子进程时,子进程会先在父进程的地址空间运行(这跟fork不一样),如果子进程调用了exit就会把父进程的IO给关掉。

 

这两个函数都带一个参数表示终止状态,这跟我们平时写的return效果是一样的,如果不返回一个终止状态,那表示这个进程的终止状态就是未定义的

技术分享图片

 

queue

原文:https://www.cnblogs.com/wenshu/p/12253015.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!