哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

隊(duì)列Queue的常用方法有哪些

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

掃碼添加小助手

加入工程師交流群

隊(duì)列-Queue

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

常用方法:

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

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

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

Queue.get(item) 獲取隊(duì)列

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

Queue.put(item) 寫(xiě)入隊(duì)列

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

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

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

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

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

poYBAGL-81CAFPZaAABAIskz18Y515.png

我們來(lái)簡(jiǎn)單實(shí)現(xiàn)"生產(chǎn)者消費(fèi)者模型":

poYBAGL-83SAerpaAAFooz0TXXY921.png

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

進(jìn)程池-Pool

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

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

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

二、程序類(lèi)型

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

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

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

poYBAGL-86CAdSbyAABqa8f7TT8718.png

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

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

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

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



審核編輯:劉清

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

    關(guān)注

    68

    文章

    11320

    瀏覽量

    225788
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    407

    瀏覽量

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

    關(guān)注

    0

    文章

    142

    瀏覽量

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

    關(guān)注

    0

    文章

    211

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

    RAW queue

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

    Queue隊(duì)列的作用是什么

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

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

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

    請(qǐng)問(wèn)為什么給queue數(shù)據(jù)隊(duì)列畫(huà)成了環(huán)形呢?

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

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

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

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

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

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

    消息隊(duì)列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'>隊(duì)列</b><b class='flag-5'>Queue</b>

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

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

    什么是queue?

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

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

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

    RTOS中Queue的工作原理

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

    隊(duì)列實(shí)現(xiàn)棧的兩種方法

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

    OpenHarmony語(yǔ)言基礎(chǔ)類(lèi)庫(kù)【@ohos.util.Queue (線性容器Queue)】

    Queue的特點(diǎn)是先進(jìn)先出,在尾部增加元素,在頭部刪除元素。根據(jù)循環(huán)隊(duì)列的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。
    的頭像 發(fā)表于 04-27 21:20 ?934次閱讀
    OpenHarmony語(yǔ)言基礎(chǔ)類(lèi)庫(kù)【@ohos.util.<b class='flag-5'>Queue</b> (線性容器<b class='flag-5'>Queue</b>)】
    监利县| 当雄县| 衡山县| 蕉岭县| 庆元县| 镇宁| 独山县| 乐安县| 巴马| 鄄城县| 宣武区| 淅川县| 乐亭县| 项城市| 西吉县| 乐清市| 宜州市| 海兴县| 西林县| 和平区| 江永县| 泾阳县| 蚌埠市| 兴山县| 华亭县| 文安县| 罗源县| 恩平市| 托里县| 乌海市| 浦江县| 辉县市| 来宾市| 晋宁县| 永昌县| 海淀区| 香河县| 突泉县| 商都县| 凉城县| 临颍县|