新聞中心
在計算機(jī)的實(shí)際相關(guān)的應(yīng)用中你是否對兩個相關(guān)異步線程速度產(chǎn)生不同時,而產(chǎn)生一些相關(guān)的問題,針對這一相關(guān)問題,Python線程編程就可以巧妙的解決相關(guān)的問題,以下是文章的具體介紹。

我們經(jīng)常會采用生產(chǎn)者/消費(fèi)者關(guān)系的兩個線程來處理一個共享緩沖區(qū)的數(shù)據(jù)。例如一個生產(chǎn)者線程接受用戶數(shù)據(jù)放入一個共享緩沖區(qū)里,等待一個消費(fèi)者線程對數(shù)據(jù) 取出處理。但是如果緩沖區(qū)的太小而生產(chǎn)者和消費(fèi)者兩個異步線程的速度不同時,容易出現(xiàn)一個線程等待另一個情況。
為了盡可能的縮短共享資源并以相同速度工作 的各線程的等待時間,我們可以使用一個“隊(duì)列”來提供額外的緩沖區(qū)。
創(chuàng)建一個“隊(duì)列”對象
- import Queue
- myqueue = Queue.Queue(maxsize = 10)Queue.Queue
類即是一個隊(duì)列的同步實(shí)現(xiàn)。隊(duì)列長度可為無限或者有限??赏ㄟ^Queue的構(gòu)造函數(shù)的可選參數(shù)maxsize來設(shè)定隊(duì)列長度。如果maxsize小于1就表示隊(duì)列長度無限。將一個值放入隊(duì)列中
- myqueue.put(10)
調(diào)用隊(duì)列對象的put()方法在隊(duì)尾插入一個項(xiàng)目。put()有兩個參數(shù),***個item為必需的,為插入項(xiàng)目的值;第二個block為可選參數(shù),默認(rèn)為1。如果隊(duì)列當(dāng)前為空且block為1,put()方法就使調(diào)用線程暫停,直到空出一個數(shù)據(jù)單元。如果block為0,put方法將引發(fā)Full異常。將一個值從隊(duì)列中取出
- myqueue.get()
調(diào)用隊(duì)列對象的get()方法從隊(duì)頭刪除并返回一個項(xiàng)目??蛇x參數(shù)為block,默認(rèn)為1。如果隊(duì)列為空且block為1,get()就使調(diào)用線程暫停,直至有項(xiàng)目可用。如果block為0,隊(duì)列將引發(fā)Empty異常。我們用一個例子來展示如何使用
- Queue# queue_example.py
以上的內(nèi)容就是對Python線程編程的相關(guān)實(shí)際應(yīng)用方案的部分介紹。
網(wǎng)頁名稱:Python線程編程解決異步線程中速度不同的方案
網(wǎng)站路徑:http://m.fisionsoft.com.cn/article/dhhcjsc.html


咨詢
建站咨詢
