日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

隊列Queue的常用方法有哪些

冬至配餃子 ? 來源:多蘭多 ? 作者:Toranto ? 2022-08-19 10:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隊列-Queue

FIFO(先入先出)隊列Queue,LIFO(后入先出)隊列LifoQueue,和優(yōu)先級隊列PriorityQueue。

常用方法:

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

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

Queue.full() 如果隊列滿了,返回True,反之False,Queue.full 與 maxsize 大小對應(yīng)

Queue.get(item) 獲取隊列

Queue.get_nowait() 相當(dāng)于Queue.get(False),非阻塞方法

Queue.put(item) 寫入隊列

Queue.task_done() 在完成一項工作之后,Queue.task_done()函數(shù)向任務(wù)已經(jīng)完成的隊列發(fā)送一個信號。每個get()調(diào)用得到一個任務(wù),接下來task_done()調(diào)用告訴隊列該任務(wù)已經(jīng)處理完畢。

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

Queue隊列方法主要用于我們的進(jìn)程間的通信。

poYBAGL-8zGAacc-AADl10N96tk172.pngpoYBAGL-8zeASJwcAADn1hwS3RM691.pngpYYBAGL-8z2AWRjfAACVSNAkYPw254.png

進(jìn)程中的通信一個最主要的用途就是用于日后的爬蟲,當(dāng)我們需要爬取5000個網(wǎng)頁的時候,我們需要從瀏覽器首頁獲取所有的靜態(tài)資源(檢查網(wǎng)頁代碼),然后再通過內(nèi)容提取來提取出其中的URL(全局資源定位符),比如:www.baidu.com,這就和生產(chǎn)者消費者模型很相似。

poYBAGL-81CAFPZaAABAIskz18Y515.png

我們來簡單實現(xiàn)"生產(chǎn)者消費者模型":

poYBAGL-83SAerpaAAFooz0TXXY921.png

poYBAGL-83qAFNFfAACyi12-0es053.png
poYBAGL-84-AII18AADGzJaoEo0934.png

進(jìn)程池-Pool

一、什么是進(jìn)程池?

在程序?qū)嶋H處理問題過程中,忙時會有成千上萬的任務(wù)需要被執(zhí)行,閑時可能只有零星任務(wù)。那么在成千上萬個任務(wù)需要被執(zhí)行的時候,我們就需要去創(chuàng)建成千上萬個進(jìn)程么?首先,創(chuàng)建進(jìn)程需要消耗時間,銷毀進(jìn)程也需要消耗時間。第二即便開啟了成千上萬的進(jìn)程,操作系統(tǒng)也不能讓他們同時執(zhí)行,這樣反而會影響程序的效率。因此我們不能無限制的根據(jù)任務(wù)開啟或者結(jié)束進(jìn)程。那么我們要怎么做呢?

進(jìn)程池就是先定義一個池子,在里面放上固定數(shù)量的進(jìn)程,有需求來了,就拿一個池中的進(jìn)程來處理任務(wù),等到處理完畢,進(jìn)程并不關(guān)閉,而是將進(jìn)程再放回進(jìn)程池中繼續(xù)等待任務(wù)。如果有很多任務(wù)需要執(zhí)行,池中的進(jìn)程數(shù)量不夠,任務(wù)就要等待之前的進(jìn)程執(zhí)行任務(wù)完畢歸來,拿到空閑進(jìn)程才能繼續(xù)執(zhí)行。也就是說,池中進(jìn)程的數(shù)量是固定的,那么同一時間最多有固定數(shù)量的進(jìn)程在運行。這樣不會增加操作系統(tǒng)的調(diào)度難度,還節(jié)省了開閉進(jìn)程的時間,也一定程度上能夠?qū)崿F(xiàn)并發(fā)效果。

二、程序類型

我們的程序有兩種:計算密集型、IO密集型

計算密集型:充分利用CPU,多線程可以充分利用多核(適合開啟多進(jìn)程,但不適合開啟很多)

IO密集型:大部分的時間都在阻塞隊列,而不是在運行狀態(tài)(根本不適合開啟多進(jìn)程)

poYBAGL-86CAdSbyAABqa8f7TT8718.png

信號量和多進(jìn)程的處理方式的差異在于,每n個信號量是同步的,也就是說,如果只設(shè)置了4個信號量,4個用戶先搶占了CPU,那剩余的496個任務(wù)量需要等待前面4個用戶完成了(100%)之后才能夠繼續(xù)進(jìn)行。而多進(jìn)程是異步的,但是由于計算機的CPU有限,采用時間片輪轉(zhuǎn)法進(jìn)行分配工作,所有的進(jìn)程都有機會同時開始任務(wù),但一段(細(xì)微)時間后,時間片就會分配給其他進(jìn)程,這樣宏觀上看起來它是同時進(jìn)行的,但其中涉及到了非常多的計算機的進(jìn)程調(diào)度,但是信號量和多進(jìn)程的處理時間需要視情況而定。

進(jìn)程池在面對這種(做500件衣服)計算密集型的程序時具有非常高的效率,使用進(jìn)程池不涉及進(jìn)程調(diào)度,也就不浪費時間,屬于流水線式24h晝夜不息工作模式,做完一件衣服立馬就會接手第二件、第三件......這種方式充分地利用了CPU,不會在創(chuàng)建進(jìn)程、進(jìn)程調(diào)度、銷毀進(jìn)程中浪費時間。

pYYBAGL-89iAPa9PAADorCKHLs8464.pngpYYBAGL-896AX1VFAAEv_aNtIQI093.pngpoYBAGL-8-WAdkj-AAAxgGL6Gwo470.png
poYBAGL-8-uADXQhAADkvTvFXk8244.png

從結(jié)果來看,我們可以發(fā)現(xiàn),進(jìn)程池的速度與多進(jìn)程和信號量比起來那是相當(dāng)?shù)耐廴K栽撚媚姆N方法不用多說了吧。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11332

    瀏覽量

    225975
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    407

    瀏覽量

    45917
  • URL
    URL
    +關(guān)注

    關(guān)注

    0

    文章

    142

    瀏覽量

    16286
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    211

    瀏覽量

    14563
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    韋東山freeRTOS系列教程之隊列(queue)(5)

    文章目錄 系列教程總目錄 概述 5.1 隊列的特性 5.1.1 常規(guī)操作 5.1.2 傳輸數(shù)據(jù)的兩種方法 5.1.3 隊列的阻塞訪問 5.2 隊列函數(shù) 5.2.1 創(chuàng)建 5.2.2 復(fù)
    的頭像 發(fā)表于 12-13 14:33 ?7093次閱讀
    韋東山freeRTOS系列教程之<b class='flag-5'>隊列</b>(<b class='flag-5'>queue</b>)(5)

    Linux下進(jìn)程通訊消息隊列

    ?MQ(message queue),從字面意思上看,本質(zhì)是個隊列,F(xiàn)IFO 先入先出,只不過隊列中存放的內(nèi)容是message 而已。MQ 是在消息的傳輸過程中保存消息的容器。多用于分布式系統(tǒng)之間
    的頭像 發(fā)表于 08-19 19:56 ?3347次閱讀
    Linux下進(jìn)程通訊消息<b class='flag-5'>隊列</b>

    RAW queue

    1queue支持FIFO 和PRIO 的任務(wù)阻塞策略,如果是FIFO 的話阻塞隊列的順序是按照先來后到的次序去排列阻塞任務(wù),PRIO 策略的話是按照優(yōu)先級的排序。具體的設(shè)置可以直接設(shè)置這個結(jié)構(gòu)體中
    發(fā)表于 02-27 14:06

    Queue隊列的作用是什么

    文章目錄前言Queue 隊列semaphore 信號量Mutex 互斥量微信公眾號前言FreeRTOS STM32CubeMX配置 內(nèi)存管理 任務(wù)管理上節(jié)介紹了用STM32CubeMX生成帶
    發(fā)表于 02-14 06:57

    消息隊列Queue相關(guān)資料推薦

    消息隊列QueueAPItx_queue_createtx_queue_deletex_queue_flushtx_queue_front_sendtx_queue_receivetx_queue_send_notifyAPItx_queue_createtx_queue_del
    發(fā)表于 02-22 06:53

    請問為什么給queue數(shù)據(jù)隊列畫成了環(huán)形呢?

    請問為什么 queue 數(shù)據(jù)隊列在《ARM 微控制器基礎(chǔ)與實戰(zhàn)》上給畫成了環(huán)形呢?
    發(fā)表于 03-09 10:55

    網(wǎng)絡(luò)中常用隊列管理方法比較

    本文主要介紹了網(wǎng)絡(luò)中常用的兩種隊列管理方法:先進(jìn)先出(FIFO)和隨機提前檢測(RED),并且通過實驗比較了這兩種隊列管理方法在解決網(wǎng)絡(luò)擁塞控制方面的表現(xiàn),體現(xiàn)了研究
    發(fā)表于 05-25 11:24 ?9次下載

    Java多線程總結(jié)之Queue

    在Java多線程應(yīng)用中,隊列的使用率很高,多數(shù)生產(chǎn)消費模型的首選數(shù)據(jù)結(jié)構(gòu)就是隊列。Java提供的線程安全的Queue可以分為 阻塞隊列和非阻塞隊列
    發(fā)表于 11-28 16:14 ?3923次閱讀
    Java多線程總結(jié)之<b class='flag-5'>Queue</b>

    ThreadX(九)------消息隊列Queue

    消息隊列QueueAPItx_queue_createtx_queue_deletex_queue_flushtx_queue_front_sendtx_queue_receivetx_queue_send_notifyAPItx_queue_createtx_queue_del
    發(fā)表于 12-28 19:35 ?2次下載
    ThreadX(九)------消息<b class='flag-5'>隊列</b><b class='flag-5'>Queue</b>

    STM32G0開發(fā)筆記:使用FreeRTOS系統(tǒng)的隊列Queue

    使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,下面為使用FreeRTOS系統(tǒng)的隊列Queue。
    的頭像 發(fā)表于 01-16 14:50 ?2531次閱讀

    什么是queue

    queue 容器,又稱隊列容器,是簡單地裝飾deque容器而成為另外的一種容器。
    的頭像 發(fā)表于 02-27 15:43 ?3501次閱讀

    FreeRTOS消息隊列結(jié)構(gòu)體

    一個結(jié)構(gòu)體用于描述隊列,叫做 Queue_t,這個結(jié)構(gòu)體在文件 queue.c 中定義。 3、隊列創(chuàng)建 在使用
    的頭像 發(fā)表于 07-06 17:03 ?2237次閱讀
    FreeRTOS消息<b class='flag-5'>隊列</b>結(jié)構(gòu)體

    RTOS中Queue的工作原理

    Queue即消息隊列是通過RTOS內(nèi)核提供的一種服務(wù)。它是一種線程間同步數(shù)據(jù)的安全方法。
    的頭像 發(fā)表于 07-25 15:45 ?5668次閱讀
    RTOS中<b class='flag-5'>Queue</b>的工作原理

    隊列實現(xiàn)棧的兩種方法

    兩個隊列實現(xiàn)一個棧 思路:兩個隊列實現(xiàn)一個棧,使用了隊列交換的思想。 代碼如下: type MyStack struct { queue1, que
    的頭像 發(fā)表于 10-08 16:01 ?1360次閱讀

    OpenHarmony語言基礎(chǔ)類庫【@ohos.util.Queue (線性容器Queue)】

    Queue的特點是先進(jìn)先出,在尾部增加元素,在頭部刪除元素。根據(jù)循環(huán)隊列的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)。
    的頭像 發(fā)表于 04-27 21:20 ?961次閱讀
    OpenHarmony語言基礎(chǔ)類庫【@ohos.util.<b class='flag-5'>Queue</b> (線性容器<b class='flag-5'>Queue</b>)】
    新和县| 石台县| 义乌市| 甘泉县| 安丘市| 宁明县| 庆安县| 西吉县| 咸阳市| 登封市| 墨竹工卡县| 龙游县| 永嘉县| 张北县| 来凤县| 绍兴县| 扶余县| 方城县| 上虞市| 巫溪县| 灵石县| 同江市| 伊金霍洛旗| 南通市| 穆棱市| 奈曼旗| 吴桥县| 香港| 三门峡市| 珠海市| 西乌珠穆沁旗| 崇信县| 颍上县| 明星| 牟定县| 南投县| 靖远县| 大关县| 杭州市| 叶城县| 延安市|