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

python樹莓派通過(guò)隊(duì)列實(shí)現(xiàn)進(jìn)程交互的程序分析

 更新時(shí)間:2021年07月04日 16:19:52   作者:AI + UTO | Robot  
這篇博客就結(jié)合實(shí)際的python程序通過(guò)隊(duì)列實(shí)現(xiàn)進(jìn)程交互,通過(guò)程序分析需要的庫(kù)函數(shù),對(duì)python樹莓派進(jìn)程交互相關(guān)知識(shí)感興趣的朋友一起看看吧

寫在前面

現(xiàn)在購(gòu)物車有一任務(wù)需求,那就是需要進(jìn)行圖像識(shí)別和運(yùn)動(dòng)控制,因此需要初始化2個(gè)進(jìn)程,從而分別完成相應(yīng)的動(dòng)作。因?yàn)檫\(yùn)動(dòng)控制需要圖像識(shí)別的結(jié)果,因此現(xiàn)在就涉及到了python語(yǔ)法實(shí)現(xiàn)2個(gè)進(jìn)程之間的協(xié)同合作,這篇博客就結(jié)合實(shí)際的python程序通過(guò)隊(duì)列實(shí)現(xiàn)進(jìn)程交互通過(guò)隊(duì)列實(shí)現(xiàn)進(jìn)程交互

程序分析

首先介紹一下我們的需要的庫(kù)函數(shù):

import time
from multiprocessing import Process, Queue

from multiprocessing import Process, Queue是主要的庫(kù),作用就是提供隊(duì)列和進(jìn)程操作函數(shù),在本次測(cè)試中我們用的的進(jìn)程和隊(duì)列操作函數(shù)有:

q1.get()#獲取q1隊(duì)列里的內(nèi)容
q1.put("q1 put things1")#往q1隊(duì)列里面加入內(nèi)容
p1 = Process(target=test1, args=(q1, q2))#初始化p1進(jìn)程
p1.start()#啟動(dòng)p1進(jìn)程
p1.join()#將p1進(jìn)行加入系統(tǒng)調(diào)度
q1.qsize()#查看q1隊(duì)列的大小

測(cè)試中的線程與進(jìn)程對(duì)應(yīng)關(guān)系:

q1隊(duì)列 -> q1進(jìn)程
q2隊(duì)列 -> q2進(jìn)程

有了上述的基本函數(shù)之后就可以來(lái)看我們的程序?qū)崿F(xiàn)了,可以看到在程序中首先進(jìn)行了進(jìn)程的初始化,啟動(dòng)和加入系統(tǒng)調(diào)度,運(yùn)行完這些語(yǔ)句之后就可以認(rèn)為p1和p2進(jìn)程初始化好了。

p1 = Process(target=test1, args=(q1, q2))
p2 = Process(target=test2, args=(q1, q2))

p1.start()
p2.start()

p1.join()
p2.join()

進(jìn)程初始化完畢之后就可以來(lái)看主要的測(cè)試函數(shù)了,首先是test1

def test1(q1, q2):
    q1.put("fisrt data")
    while(1):
        s = q2.get()
        print('q2 left + ' + str(q2.qsize()))
        print('q1 get + ' + s)
        q1.put("q1 put things1")
        q1.put("q1 put things2\n")
        time.sleep(1)

在之前的初始化函數(shù)中,我們是先初始化了p1進(jìn)程,也就是test1會(huì)先運(yùn)行,因此為了保證在開始的時(shí)候進(jìn)程的隊(duì)列里面有內(nèi)容,我先在函數(shù)的最開始就在q1隊(duì)列中加入了內(nèi)容“fisrt data”,為了保證測(cè)試持續(xù)進(jìn)行,因此我將test1進(jìn)程設(shè)成了死循環(huán),在test1中,會(huì)先去獲取q2隊(duì)列里的內(nèi)容和q2隊(duì)列大小并打印,然后會(huì)在q1隊(duì)列中放入新的內(nèi)容,請(qǐng)注意,這里放入了2個(gè)節(jié)點(diǎn)的數(shù)據(jù),分別是“q1 put things1”和“q1 put things2\n”

在這里我提出一個(gè)問(wèn)題:

那就是當(dāng)p1進(jìn)程去獲取q2隊(duì)列里的內(nèi)容的時(shí)候,p1進(jìn)程會(huì)將q2隊(duì)列里的全部?jī)?nèi)容都取出還是只會(huì)取出q2隊(duì)列最前面的那個(gè)數(shù)據(jù)呢?

接下來(lái)我們就來(lái)解決一下這個(gè)問(wèn)題。接下來(lái)我們來(lái)看一下test2函數(shù)里面干了些什么:

def test2(q1, q2):
    while(1):
        s = q1.get()
        print('q1 left + ' + str(q1.qsize()))
        print('q2 get + ' + s)
        q2.put("q2 put data1")
        time.sleep(1)

test2函數(shù)中做的事情就比較少了,就是先獲取了q1隊(duì)列中的數(shù)據(jù)和q1剩余隊(duì)列大小并打印,接著往q2隊(duì)列加入“q2 put data1”。

結(jié)果分析

我們來(lái)看一下main函數(shù)里面的調(diào)用:

if __name__ == '__main__':
    p1 = Process(target=test1, args=(q1, q2))
    p2 = Process(target=test2, args=(q1, q2))

    p1.start()
    p2.start()

    p1.join()
    p2.join()

在main函數(shù)里面只是做了線程啟動(dòng)的操作,我們?cè)賮?lái)看一下輸出結(jié)果:

在這里插入圖片描述

從結(jié)果中我們可以很清楚的看到,q1線程每次會(huì)加入2個(gè)節(jié)點(diǎn)數(shù)據(jù),然后p2進(jìn)程會(huì)從q1線程中做q1.get()的操作,隨著循環(huán)次數(shù)的不斷增加,我們可以發(fā)現(xiàn)q1隊(duì)列的長(zhǎng)度不斷增加,從而我們可以得出結(jié)論:
p1進(jìn)程去獲取q2隊(duì)列里的內(nèi)容的時(shí)候,p1進(jìn)程會(huì)將q2隊(duì)列最前面的那個(gè)數(shù)據(jù)取出。

到此這篇關(guān)于python樹莓派通過(guò)隊(duì)列實(shí)現(xiàn)進(jìn)程交互的程序分析的文章就介紹到這了,更多相關(guān)python樹莓派進(jìn)程交互內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python自動(dòng)化辦公之Word文件內(nèi)容的讀取

    Python自動(dòng)化辦公之Word文件內(nèi)容的讀取

    word、excel、PPT,雖然說(shuō)是特殊文件,其實(shí)也是實(shí)際工作中我們經(jīng)常會(huì)用到的文件類型。本文將為大家詳解Python讀取Word文件和文件內(nèi)容的方法,感興趣的可以了解一下
    2022-05-05
  • 利用Python+OpenCV三步去除水印

    利用Python+OpenCV三步去除水印

    去水印需要用到的庫(kù):cv2、numpy,cv2是基于OpenCV的圖像處理庫(kù),可以對(duì)圖像進(jìn)行腐蝕,膨脹等操作.numpy這是一個(gè)強(qiáng)大的處理矩陣和維度運(yùn)算的庫(kù),,需要的朋友可以參考下
    2021-05-05
  • 如何基于python實(shí)現(xiàn)不鄰接植花

    如何基于python實(shí)現(xiàn)不鄰接植花

    這篇文章主要介紹了如何基于python實(shí)現(xiàn)不鄰接植花,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python實(shí)現(xiàn)獲取nginx服務(wù)器ip及流量統(tǒng)計(jì)信息功能示例

    Python實(shí)現(xiàn)獲取nginx服務(wù)器ip及流量統(tǒng)計(jì)信息功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)獲取nginx服務(wù)器ip及流量統(tǒng)計(jì)信息功能,涉及Python針對(duì)nginx服務(wù)器信息操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-05-05
  • Python pygame 項(xiàng)目實(shí)戰(zhàn)事件監(jiān)聽

    Python pygame 項(xiàng)目實(shí)戰(zhàn)事件監(jiān)聽

    這篇文章主要介紹了Python pygame 項(xiàng)目實(shí)戰(zhàn)事件監(jiān)聽,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Django實(shí)現(xiàn)內(nèi)容緩存實(shí)例方法

    Django實(shí)現(xiàn)內(nèi)容緩存實(shí)例方法

    在本篇文章里小編給大家整理了關(guān)于Django實(shí)現(xiàn)內(nèi)容緩存實(shí)例方法,有需要的朋友們可以跟著學(xué)習(xí)下。
    2020-06-06
  • 解決pycharm19.3.3安裝pyqt5找不到designer.exe和pyuic.exe的問(wèn)題

    解決pycharm19.3.3安裝pyqt5找不到designer.exe和pyuic.exe的問(wèn)題

    這篇文章給大家介紹了pycharm19.3.3安裝pyqt5&pyqt5-tools后找不到designer.exe和pyuic.exe以及配置QTDesigner和PyUIC的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-04-04
  • 詳解Python小數(shù)據(jù)池和代碼塊緩存機(jī)制

    詳解Python小數(shù)據(jù)池和代碼塊緩存機(jī)制

    這篇文章主要介紹了詳解Python 小數(shù)據(jù)池和代碼塊緩存機(jī)制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python常見(jiàn)庫(kù)matplotlib學(xué)習(xí)筆記之多個(gè)子圖繪圖

    Python常見(jiàn)庫(kù)matplotlib學(xué)習(xí)筆記之多個(gè)子圖繪圖

    Matplotlib是Python提供的一個(gè)繪圖庫(kù),通過(guò)該庫(kù)我們可以很容易的繪制出折線圖、直方圖、散點(diǎn)圖、餅圖等豐富的統(tǒng)計(jì)圖,下面這篇文章主要給大家介紹了關(guān)于Python常見(jiàn)庫(kù)matplotlib學(xué)習(xí)筆記之多個(gè)子圖繪圖的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 學(xué)python安裝的軟件總結(jié)

    學(xué)python安裝的軟件總結(jié)

    在本篇文章里小編給大家整理了是關(guān)于學(xué)python安裝什么軟件的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2019-10-10

最新評(píng)論

红桥区| 正阳县| 临高县| 利川市| 惠安县| 乌兰浩特市| 济宁市| 宜阳县| 宜阳县| 稷山县| 永川市| 成都市| 鸡西市| 玉林市| 望江县| 嘉祥县| 荣昌县| 仁布县| 天长市| 繁峙县| 祁门县| 湖口县| 华宁县| 佛冈县| 南江县| 泾源县| 浙江省| 昆明市| 罗江县| 垣曲县| 岚皋县| 扶余县| 玉门市| 格尔木市| 南昌市| 云浮市| 方城县| 株洲县| 临高县| 台中市| 龙山县|