婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > python樹莓派通過隊(duì)列實(shí)現(xiàn)進(jìn)程交互的程序分析

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

熱門標(biāo)簽:長春極信防封電銷卡批發(fā) 企業(yè)彩鈴地圖標(biāo)注 如何地圖標(biāo)注公司 外賣地址有什么地圖標(biāo)注 煙臺(tái)電話外呼營銷系統(tǒng) 銀川電話機(jī)器人電話 上海正規(guī)的外呼系統(tǒng)最新報(bào)價(jià) 預(yù)覽式外呼系統(tǒng) 電銷機(jī)器人錄音要學(xué)習(xí)什么

寫在前面

現(xiàn)在購物車有一任務(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語法實(shí)現(xiàn)2個(gè)進(jìn)程之間的協(xié)同合作,這篇博客就結(jié)合實(shí)際的python程序通過隊(duì)列實(shí)現(xiàn)進(jìn)程交互通過隊(duì)列實(shí)現(xiàn)進(jìn)程交互

程序分析

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

import time
from multiprocessing import Process, Queue

from multiprocessing import Process, Queue是主要的庫,作用就是提供隊(duì)列和進(jìn)程操作函數(shù),在本次測試中我們用的的進(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ì)列的大小

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

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

有了上述的基本函數(shù)之后就可以來看我們的程序?qū)崿F(xiàn)了,可以看到在程序中首先進(jìn)行了進(jìn)程的初始化,啟動(dòng)和加入系統(tǒng)調(diào)度,運(yùn)行完這些語句之后就可以認(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)程初始化完畢之后就可以來看主要的測試函數(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”,為了保證測試持續(xù)進(jìn)行,因此我將test1進(jìn)程設(shè)成了死循環(huán),在test1中,會(huì)先去獲取q2隊(duì)列里的內(nèi)容和q2隊(duì)列大小并打印,然后會(huì)在q1隊(duì)列中放入新的內(nèi)容,請注意,這里放入了2個(gè)節(jié)點(diǎn)的數(shù)據(jù),分別是“q1 put things1”和“q1 put things2\n”

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

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

接下來我們就來解決一下這個(gè)問題。接下來我們來看一下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é)果分析

我們來看一下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)的操作,我們再來看一下輸出結(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ì)列的長度不斷增加,從而我們可以得出結(jié)論:
p1進(jìn)程去獲取q2隊(duì)列里的內(nèi)容的時(shí)候,p1進(jìn)程會(huì)將q2隊(duì)列最前面的那個(gè)數(shù)據(jù)取出

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

您可能感興趣的文章:
  • 樹莓派升級python的具體步驟
  • 樹莓派4B+opencv4+python 打開攝像頭的實(shí)現(xiàn)方法
  • 樹莓派使用python-librtmp實(shí)現(xiàn)rtmp推流h264的方法
  • 樹莓派用python中的OpenCV輸出USB攝像頭畫面
  • 在樹莓派2或樹莓派B+上安裝Python和OpenCV的教程

標(biāo)簽:宜昌 湖北 盤錦 佳木斯 上饒 珠海 潮州 西寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python樹莓派通過隊(duì)列實(shí)現(xiàn)進(jìn)程交互的程序分析》,本文關(guān)鍵詞  python,樹莓,派,通過,隊(duì)列,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python樹莓派通過隊(duì)列實(shí)現(xiàn)進(jìn)程交互的程序分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于python樹莓派通過隊(duì)列實(shí)現(xiàn)進(jìn)程交互的程序分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 恭城| 广昌县| 土默特右旗| 宜阳县| 彰武县| 徐闻县| 南丹县| 南江县| 普格县| 奉新县| 丘北县| 东辽县| 九江市| 措美县| 贵港市| 鸡西市| 富民县| 宝坻区| 三亚市| 龙里县| 上犹县| 夏津县| 循化| 凌海市| 乌鲁木齐县| 阿克苏市| 家居| 丹寨县| 乳源| 鄄城县| 门头沟区| 金昌市| 子长县| 昌吉市| 牟定县| 涿州市| 滨州市| 定兴县| 靖江市| 昌江| 晋城|