10.多线程与queue

1.Queue类实现了一个基本的先进先出(FIFO)容器,使用put()将元素添加到序列尾端,get()从队列头部移除元素

2.与标准FIFO实现Queue不同的是,LifoQueue使用后进先出序(会关联一个栈数据结构)。最后put()到队列的元素最先被get()

3.PriorityQueue依据队列中内容的排序顺序(sort order)来决定那个元素将被检索。

from Queue import Queue,LifoQueue,PriorityQueue

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Queue
import threading
import time

Thread_id = 1
Thread_num = 3
class myThread(threading.Thread):
    def __init__(self, q):
        global Thread_id
        threading.Thread.__init__(self)
        self.q = q
        self.Thread_id = Thread_id
        Thread_id = Thread_id + 1

    def run(self):
        while True:
            try:
                task = self.q.get(block = True, timeout = 1) #不设置阻塞的话会一直去尝试获取资源
            except Queue.Empty:
                print 'Thread' ,  self.Thread_id , 'end'
                break
            #取到数据,开始处理(依据需求加处理代码)
            print "Starting " , self.Thread_id
            print task
            self.q.task_done()
            print "Ending " , self.Thread_id


q = Queue.Queue(10)

#向资源池里面放10个数用作测试
for i in range(10):
    q.put(i)

#开Thread_num个线程 
for i in range(0, Thread_num):
    worker = myThread(q)
    worker.start()

q.join() #等待所有的队列资源都用完
print "Exiting Main Thread"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值