最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python線程優(yōu)先級(jí)隊(duì)列知識(shí)點(diǎn)總結(jié)

 更新時(shí)間:2021年02月28日 10:11:13   作者:小妮淺淺  
在本篇文章里小編給大家整理的一篇關(guān)于python線程優(yōu)先級(jí)隊(duì)列知識(shí)點(diǎn)總結(jié),有興趣的朋友們可以學(xué)習(xí)參考下。

Python 的 Queue 模塊中提供了同步的、線程安全的隊(duì)列類,包括FIFO(先入先出)隊(duì)列Queue,LIFO(后入先出)隊(duì)列LifoQueue,和優(yōu)先級(jí)隊(duì)列 PriorityQueue。

1、說明

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

模塊中的常用方法如下:

  • Queue.qsize() 返回隊(duì)列的大小
  • Queue.empty() 如果隊(duì)列為空,返回True,反之False
  • Queue.full() 如果隊(duì)列滿了,返回True,反之False
  • Queue.full 與 maxsize 大小對應(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í)行別的操作

2、實(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 ("退出主線程")

知識(shí)點(diǎn)擴(kuò)展:

問題

怎樣實(shí)現(xiàn)一個(gè)按優(yōu)先級(jí)排序的隊(duì)列? 并且在這個(gè)隊(duì)列上面每次 pop 操作總是返回優(yōu)先級(jí)最高的那個(gè)元素

解決方案

下面的類利用 heapq 模塊實(shí)現(xiàn)了一個(gè)簡單的優(yōu)先級(jí)隊(duì)列:

import heapq

class PriorityQueue:
 def __init__(self):
 self._queue = []
 self._index = 0

 def push(self, item, priority):
 heapq.heappush(self._queue, (-priority, self._index, item))
 self._index += 1

 def pop(self):
 return heapq.heappop(self._queue)[-1]

下面是它的使用方式:

>>> class Item:
... def __init__(self, name):
...  self.name = name
... def __repr__(self):
...  return 'Item({!r})'.format(self.name)
...
>>> q = PriorityQueue()
>>> q.push(Item('foo'), 1)
>>> q.push(Item('bar'), 5)
>>> q.push(Item('spam'), 4)
>>> q.push(Item('grok'), 1)
>>> q.pop()
Item('bar')
>>> q.pop()
Item('spam')
>>> q.pop()
Item('foo')
>>> q.pop()
Item('grok')
>>>

到此這篇關(guān)于python線程優(yōu)先級(jí)隊(duì)列知識(shí)點(diǎn)總結(jié)的文章就介紹到這了,更多相關(guān)python線程優(yōu)先級(jí)隊(duì)列有哪些內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pytorch打印網(wǎng)絡(luò)結(jié)構(gòu)的實(shí)例

    pytorch打印網(wǎng)絡(luò)結(jié)構(gòu)的實(shí)例

    今天小編就為大家分享一篇pytorch打印網(wǎng)絡(luò)結(jié)構(gòu)的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python爬取百度貼吧前1000頁內(nèi)容(requests庫面向?qū)ο笏枷雽?shí)現(xiàn))

    python爬取百度貼吧前1000頁內(nèi)容(requests庫面向?qū)ο笏枷雽?shí)現(xiàn))

    這篇文章主要介紹了python爬取百度貼吧前1000頁內(nèi)容(requests庫面向?qū)ο笏枷雽?shí)現(xiàn)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python 實(shí)現(xiàn)圖片上傳接口開發(fā) 并生成可以訪問的圖片url

    python 實(shí)現(xiàn)圖片上傳接口開發(fā) 并生成可以訪問的圖片url

    今天小編就為大家分享一篇python 實(shí)現(xiàn)圖片上傳接口開發(fā) 并生成可以訪問的圖片url,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python通過Seq2Seq實(shí)現(xiàn)閑聊機(jī)器人

    python通過Seq2Seq實(shí)現(xiàn)閑聊機(jī)器人

    這篇文章主要介紹了python通過Seq2Seq實(shí)現(xiàn)閑聊機(jī)器人,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • pytorch的backward()的底層實(shí)現(xiàn)邏輯詳解

    pytorch的backward()的底層實(shí)現(xiàn)邏輯詳解

    自動(dòng)微分是一種計(jì)算張量(tensors)的梯度(gradients)的技術(shù),它在深度學(xué)習(xí)中非常有用,這篇文章主要介紹了pytorch的backward()的底層實(shí)現(xiàn)邏輯,需要的朋友可以參考下
    2023-11-11
  • 用Python做個(gè)自動(dòng)化彈鋼琴腳本實(shí)現(xiàn)天空之城彈奏

    用Python做個(gè)自動(dòng)化彈鋼琴腳本實(shí)現(xiàn)天空之城彈奏

    突然靈機(jī)一動(dòng),能不能用Python自動(dòng)化腳本彈奏一曲美妙的鋼琴曲呢?今天就一起帶大家如何用Python實(shí)現(xiàn)自動(dòng)化彈出一首《天空之城》有需要的朋友可以借鑒參考下
    2021-09-09
  • python?包?requests?實(shí)現(xiàn)請求操作

    python?包?requests?實(shí)現(xiàn)請求操作

    這篇文章主要介紹了python?包?requests?實(shí)現(xiàn)請求操作,文章介紹內(nèi)容包括帶參數(shù)請求、自定義headers,文章內(nèi)容詳細(xì)具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • 關(guān)于python如何生成exe文件

    關(guān)于python如何生成exe文件

    這篇文章主要介紹了關(guān)于python如何生成exe文件,exe全稱“executable”,中文意思為“可執(zhí)行的”,是一種文件格式,是指一種可在操作系統(tǒng)存儲(chǔ)空間中浮動(dòng)定位的可執(zhí)行程序,需要的朋友可以參考下
    2023-04-04
  • Python四大金剛之字典詳解

    Python四大金剛之字典詳解

    這篇文章主要介紹了Python的字典,小編覺得這篇文章寫的還不錯(cuò),需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-10-10
  • 利用Python如何將數(shù)據(jù)寫到CSV文件中

    利用Python如何將數(shù)據(jù)寫到CSV文件中

    在數(shù)據(jù)分析中經(jīng)常需要從csv格式的文件中存取數(shù)據(jù)以及將數(shù)據(jù)寫書到csv文件中。下面這篇文章主要給大家介紹了關(guān)于利用Python如何將數(shù)據(jù)寫到CSV文件中的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-06-06

最新評論

湘阴县| 金沙县| 潜江市| 邓州市| 建阳市| 天峻县| 铜梁县| 六枝特区| 内黄县| 梁山县| 长岛县| 铜鼓县| 双峰县| 华亭县| 资阳市| 武穴市| 柯坪县| 丰城市| 独山县| 长春市| 商洛市| 丘北县| 高雄市| 遂川县| 泸水县| 越西县| 南澳县| 枣庄市| 嘉祥县| 宁城县| 中阳县| 贡山| 临泉县| 临漳县| 抚宁县| 措勤县| 开阳县| 丰都县| 洪泽县| 商都县| 平乐县|