python队列 和线程

import   queue

#设置队列上限maxsize=10
q=queue.Queue(maxsize=10)

#往队列中加10个数据
for i in range(100):
    if q.qsize() >= 10:
        #存放的数据达到上限maxsize,插入会导致阻塞
        break
    else:
        q.put(i)

# 从队列中取值
while not q.empty():
    n = q.get()
    print("本次取出数据: %s"   %n)
import  queue
import threading
import time

exitFlag=0

class myThread(threading.Thread):
    def __init__(self,threadID,name,q):
        threading.Thread.__init__(self)
        self.threadID=threadID
        self.name=name
        self.q=q
    def run(self):
        print('Starting'+self.name)
        process_data(self.name,self.q)
        print('Exiting'+self.name)

        
def process_data(threadName,q):
        while not exitFlag:
            queueLock.acquire()
            if not workQueue.empty():
                data=q.get()
                queueLock.release()
                print('%s processing %s' %(threadName,data))
            else:
                queueLock.release()
            time.sleep(1)
users=['user1','user2','user3']
usernames=['name1','name2','name3','name4','name5','name6','name7','name8','name9','name10']
queueLock=threading.Lock()
workQueue=queue.Queue(10)
threads=[]
threadID=1

#创建新线程
for  tName in users:
    thread=myThread(threadID,tName,workQueue)
    thread.start()
    threads.append(thread)
    threadID+=1

#    填充队列
queueLock.acquire()
for  word in usernames:
    workQueue.put(word)
queueLock.release()

# 等待队列清空
while  not workQueue.empty():
    pass

# 通知线程是时候退出
exitFlag=1


#等待所有线程完成
for  t in threads:
    t.join()
print('Exiting Main Thread')

 

转载于:https://www.cnblogs.com/paul-wang/p/9877091.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值