import queueimport threadingimport timeexitFlag =0class myThread(threading.Thread): def __init__(self, threadID, name, m_queue): threading.Thread.__init__(self) self.threadID= threadID #线程ID self.name = name #线程名称 self.m_queue =m_queue #出列顺序 def run(self): print("开始线程" + self.name) process_data(self.name, self.m_queue) #执行工作函数 print("结束线程" + self.name)#执行工作函数def process_data(threadname, m_queue): #传入线程名称以及出列顺序 while not exitFlag: #判断线程是否执行完毕 #获取线程同步锁 queueLock.acquire() if not workQueue.empty(): #判断工作队列是否处理完毕 data = m_queue.get() queueLock.release() #释放锁 print("%s processing %s" % (threadname, data)) else: queueLock.release() #释放线程同步锁 time.sleep(1)#创建线程列表threadList =["thread-1", "thread-2", "thread-3"]#需要处理的数据nameList =["One", "Two", "Three", "Four", "Five", ]#创建线程同步锁queueLock =threading.Lock()#确认出列顺序,先进先出workQueue =queue.Queue()#按照先进后出的方式出列#workQueue =queue.lifoQueue()#确认出列顺序,按照优先级顺序出列#workQueue = queue.PriorityQueue()#创建线程池,稍后会将创建的线程加入线程池中threads =[]#创建线程IDthreadID=1#批量创建新线程for tname in threadList: thread =myThread(threadID, tname, workQueue) #创建线程,传入线程ID,线程名称,出列顺序 thread.start() #线程启动 threads.append(thread) #将线程放入线程池 threadID +=1 #定义下一个线程的ID值#获取线程锁queueLock.acquire()for work in nameList: workQueue.put(work)queueLock.release() #释放线程锁#等待队列消息处理完毕while not workQueue.empty(): pass#通知线程退出exitFlag =1#等待线程池线程工作完毕for t in threads: t.join()print(nameList)print("退出主线程.......")
总结
以上是内存溢出为你收集整理的Python 线程优先级,出列顺序,先进先出,先进后出 代码实现全部内容,希望文章能够帮你解决Python 线程优先级,出列顺序,先进先出,先进后出 代码实现所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)