日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
詳解python線程優(yōu)先級(jí)隊(duì)列:Queue

線程可以劃分優(yōu)先級(jí),優(yōu)先級(jí)高的線程得到的CPU資源比較多,也就是CPU優(yōu)先執(zhí)行優(yōu)先級(jí)高的線程對(duì)象中的任務(wù)。

我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、慶城ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的慶城網(wǎng)站制作公司

設(shè)置線程優(yōu)先級(jí)有助于幫助線程規(guī)劃器確定下一次選中哪一個(gè)線程優(yōu)先執(zhí)行。

本篇文章為大家講解一下Python3 線程優(yōu)先級(jí)隊(duì)列( Queue)

這些隊(duì)列都實(shí)現(xiàn)了鎖原語(yǔ),能夠在多線程中直接使用,可以使用隊(duì)列來(lái)實(shí)現(xiàn)線程間的同步。

Queue 模塊中的常用方法:

Queue.qsize() 返回隊(duì)列的大小

Queue.empty() 如果隊(duì)列為空,返回True,反之False

Queue.full() 如果隊(duì)列滿了,返回True,反之False

Queue.full 與 maxsize 大小對(duì)應(yīng)

Queue.get([block[, timeout]])獲取隊(duì)列,timeout等待時(shí)間

Queue.get_nowait() 相當(dāng)Queue.get(False)

Queue.put(item) 寫入隊(duì)列,timeout等待時(shí)間

Queue.put_nowait(item) 相當(dāng)Queue.put(item, False)

Queue.task_done() 在完成一項(xiàng)工作之后,Queue.task_done()函數(shù)向任務(wù)已經(jīng)完成的隊(duì)列發(fā)送一個(gè)信號(hào)

Queue.join() 實(shí)際上意味著等到隊(duì)列為空,再執(zhí)行別的操作

實(shí)例:

#!/usr/bin/python3

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 ("開啟線程:" + self.name)
       process_data(self.name, self.q)
       print ("退出線程:" + 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)

threadList = ["Thread-1", "Thread-2", "Thread-3"]
nameList = ["One", "Two", "Three", "Four", "Five"]
queueLock = threading.Lock()
workQueue = queue.Queue(10)
threads = []
threadID = 1

# 創(chuàng)建新線程
for tName in threadList:
   thread = myThread(threadID, tName, workQueue)
   thread.start()
   threads.append(thread)
   threadID += 1

# 填充隊(duì)列
queueLock.acquire()
for word in nameList:
   workQueue.put(word)
queueLock.release()

# 等待隊(duì)列清空
while not workQueue.empty():
   pass

# 通知線程是時(shí)候退出
exitFlag = 1

# 等待所有線程完成
for t in threads:
   t.join()
print ("退出主線程")

以上程序執(zhí)行結(jié)果:

開啟線程:Thread-1
開啟線程:Thread-2
開啟線程:Thread-3
Thread-3 processing One
Thread-1 processing Two
Thread-2 processing Three
Thread-3 processing Four
Thread-1 processing Five
退出線程:Thread-3
退出線程:Thread-2
退出線程:Thread-1
退出主線程

網(wǎng)頁(yè)名稱:詳解python線程優(yōu)先級(jí)隊(duì)列:Queue
網(wǎng)站鏈接:http://www.dlmjj.cn/article/djopijh.html