python 队列和栈

队列:管道或者巷子,先进先出

队列基本操作
import queue


#q=queue.Queue(3)  # 默认是先进先出(FIFO)


# q.put(111)
# q.put("hello")
# q.put(222)

# q.put(223,False)
#
# print(q.get())
# # print(q.get())
# # print(q.get())
# #
# q.get(False)


# queue 优点: 线程安全的



# join和task_done


# q=queue.Queue(5)
#
# q.put(111)
# q.put(222)
# q.put(22222)
#
#
# while not q.empty():
#         a=q.get()
#         print(a)
# q.task_done()
#
#
# b=q.get()
# print(b)
# q.task_done()
#
# q.join()
#
# print("ending")


#  先进后出模式
# q=queue.LifoQueue()  #  Lifo  last in first out
#
#
# q.put(111)
# q.put(222)
# q.put(333)
#
# print(q.get())
# print(q.get())
# print(q.get())



# 优先级
#
# q=queue.PriorityQueue()
#
# q.put([4,"hello4"])
# q.put([1,"hello"])
# q.put([2,"hello2"])
#
# print(q.get())
# print(q.get())



# import queue
#
#
# q=queue.Queue()
#
# q.put(111)
# q.put(2222)
# q.put(22333)
#
# print( )

  

队列的生产者消费者模型

#生产者消费者模型

import time,random
import queue,threading

q = queue.Queue(5)

def Producer(name):
  count = 0
  while count <10:
    print("making........")
    time.sleep(2)
    q.put(count)
    print('Producer %s has produced %s baozi..' %(name, count))

    count +=1
    #q.task_done()
    #q.join()
    print("ok......")

def Consumer(name):
  count = 0
  while count <10:
    time.sleep(1)
    if not q.empty():
        data = q.get()
        #q.task_done()
        #q.join()
        print(data)
        print('\033[32;1mConsumer %s has eat %s baozi...\033[0m' %(name, data))
    else:
        print("-----no baozi anymore----")

    count +=1

p1 = threading.Thread(target=Producer, args=('A',))
c1 = threading.Thread(target=Consumer, args=('B',))

# c2 = threading.Thread(target=Consumer, args=('C',))
# c3 = threading.Thread(target=Consumer, args=('D',))
p1.start()
c1.start()
# c2.start()
# c3.start()

  

栈:后进先出或者先进后出 

posted @ 2017-09-21 15:36  Adamanter  阅读(234)  评论(0编辑  收藏  举报