zoukankan      html  css  js  c++  java
  • queue

    队列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效果是一样的,如果不返回一个终止状态,那表示这个进程的终止状态就是未定义的

  • 相关阅读:
    div中子div在firefox ie 水平居中对齐
    Access数据库自定义连接字符串(详细有图百度文档)
    ASP页面乱码
    国内开源asp.netCMS汇总
    sql 2005
    卡巴斯基授权key导入方式方法及其导入key基本原理
    关于SqlServer服务无法启动的症状分析和解决方法
    js下流媒体的在线播放
    用JS+vml作三维报表
    了解嵌入式数据库(sqlite,firebird)
  • 原文地址:https://www.cnblogs.com/wenshu/p/12253015.html
Copyright © 2011-2022 走看看