Python3之程序生產者消費者模型(important)
程式碼演示
'''
首先,消費者函式從佇列中取一次數值然後呼叫q.task_done()通知生產者函式,<font color="#ff0000">該元素</font>我已經取過了,直到將全部元素取出。
在生產者函式中呼叫q.join()時,函式被掛起,直到佇列的資料被全部取走,函式才能繼續執行,生產者函式執行結束後,消費者函式還在等待佇列中的資料,但此時消費者函式已經沒有存活的必要,所以當主程序結束時,可以將該執行消費者函式的子程序帶走,設定為守護程序即可'''
import os
import time
from multiprocessing import Process, JoinableQueue
def producer0(q):
for i in range(5):
print('%s 生產了 %s' % (os.getpid(), i))
q.put(i)
q.join()
def producer1(q):
for i in range(5):
print('%s 生產了 %s' % (os.getpid(), i))
q.put(i)
q.join()
def producer2(q):
for i in range(5 ):
print('%s 生產了 %s' % (os.getpid(), i))
q.put(i)
q.join()
def consumer(q):
while 1:
res = q.get()
time.sleep(3)
print('%s 消費了 %s' % (os.getpid(), res))
q.task_done()
if __name__ == '__main__':
q = JoinableQueue()
p1 = Process(target=producer0, args=(q,))
p2 = Process(target=producer1, args=(q,))
p3 = Process(target=producer2, args=(q,))
p4 = Process(target=consumer, args=(q,))
p5 = Process(target=consumer, args=(q,))
p_l = [p1, p2, p3, p4, p5]
#資料取完後消費者還在等著資料加入佇列,但是生產者函式已經結束了,所以消費者可以隨著主程序的結束而結束,所以將消費者函式設定為守護程序。
p4.daemon = True
p5.daemon = True
for p in p_l:
p.start()
p1.join()
p2.join()
p3.join()
print('主程序')
相關推薦
Python3之程序生產者消費者模型(important)
程式碼演示 ''' 首先,消費者函式從佇列中取一次數值然後呼叫q.task_done()通知生產者函式,<font color="#ff0000">該元素</font&g
生產者消費者模型(重要)
生產者消費者模型介紹 生產者指的是生產資料的任務,消費者指的是處理資料的任務。 在併發程式設計中,如果生產者處理速度很快,而消費者處理速度很慢,那麼生產者就必須等待消費者處理完,才能繼續生產資料。同樣的道理,如果消費者的處理能力大於生產者,那麼消費
轉: 【Java並發編程】之十三:生產者—消費者模型(含代碼)
tool boolean 通知 阻塞 上一個 [] ble 否則 線程 轉載請註明出處:http://blog.csdn.net/ns_code/article/details/17249321 生產者消費者問題是線程模型中的經典問題:生產者和消費者在同一時間段
生產者-消費者模型(boost實現)
mydata.h #ifndef _MYDATA_H_ #define _MYDATA_H_ #endif #include "stdafx.h" #include<iostream> #include <boost/thread/condition.hpp> #
java併發之----實現生產者/消費者模式(操作值&一對一交替列印)
一、實現生產者/消費者模式 1、一生產與一消費:操作值 利用synchronized 實現,程式碼如下: public class Producer { private String lock; public Producer(String lock){ this.loc
十九、併發程式設計之通過生產者消費者模型理解等待喚醒機制
生產者 //生產者 public class PushTarget implements Runnable{ private Tmail tmail;//銷售平臺 public PushTarget(Tmail tmail) { this.tmail = tma
企業架構研究總結(13)——聯邦企業架構之FEA及參考模型(下)
資料參考模型DRM 資料參考模型的目標是通過標準的資料描述、通用資料的發現以及統一的資料管理實踐的推廣使得聯邦政府實現跨機構的資訊共享和重用。資料參考模型的適用範圍很廣,它可以用在一個機構內部,也可以用在某一個利益共同體(COI,Community
作業系統之程序—臨界區管理 (二)
1.臨界區管理 臨界區:併發程序中與共享變數有關的程式段 臨界資源:共享變數代表的資源 2.臨界區解決互斥問題 如果能保證程序在臨界區執行時,不讓另一個程序進入臨界區,即各程序對共享變數的訪問是互斥的,就不會造成與時間有關的錯誤 3.臨界區的排程原則 一次至
EM演算法之高斯混合模型(一)
單個高斯模型 如果我們有一堆資料,其分佈屬於一個高斯模型,那麼有 p(X)=N(x|μ,Σ)=1(2π)m|Σ|‾‾‾‾‾‾‾‾√exp[−12(x−μ)TΣ−1(x−μ)](1.1) p(X) = N(x|\mu,\Sigma) = \
【機器學習 Opencv】Opencv之Bag of Word模型(一)
上圖是一張新圖對映到詞典時得到的直方圖,可以看出,這張圖片相對於圖2的情況而言,更接近類別1,所以通過分類器,理想的狀態時判斷為1。但是我們都知道,理想狀態出現的可能性太小,所以BOW難免會有出錯的時候,通過閱讀幾篇論文,發現BOW的識別率大概在60%-80%之間,當然了一方面是資料量巨大的問題
現代作業系統之程序與執行緒(上)
程序 基本概念 一個程序就是一個正在執行程式的例項,包括程式計數器、暫存器和變數當前的值。從概念上說,每個程序擁有它自己的虛擬cpu。實際上,每個瞬間CPU只能執行一個程序。 在對程序程式設計時不能對時序做任何確定對假設。 建立程序 常見情況: 系統初始化執行政治執
scala之Akka的Actor模型(上)
原文地址:http://my.oschina.net/jingxing05/blog/287213 明確並行和併發 看兩張圖 並行parallelism 併發concurrency 關鍵點在於 多個任務之間 有沒有 交流和互動的! 交流: 共享記憶體
Java NIO之理解I/O模型(二)
前言 上一篇文章講解了I/O模型的一些基本概念,包括同步與非同步,阻塞與非阻塞,同步IO與非同步IO,阻塞IO與非阻塞IO。這次一起來了解一下現有的幾種IO模型,以及高效IO的兩種設計模式,也都是屬於IO模型的基礎知識。 UNIX下可用的五種I/O模型 根據UNIX網路程式設計對IO模型的分類,UNIX
python並發編程之多進程(二):互斥鎖(同步鎖)&進程其他屬性&進程間通信(queue)&生產者消費者模型
互斥 數據 socket pan copy src too 如果 搶票 一,互斥鎖,同步鎖 進程之間數據不共享,但是共享同一套文件系統,所以訪問同一個文件,或同一個打印終端,是沒有問題的, 競爭帶來的結果就是錯亂,如何控制,就是加鎖處理 part1:多個進程共享同
python之路-day31-守護程序、鎖、佇列、生產者消費者模型
一、守護程序 之前我們講的子程序是不會隨著主程序而結束的,子程序全部執行完之後,程式才結束,那麼如果有 一天我們的需求是我的主程序結束了,由主程序建立的子程序必須跟著結束,怎麼辦?守護程序就來了! 主程序建立守護程序 其一:守護程序會在主程序程式碼執行結
毛毛Python進階之路4——訊號量、事件、佇列、生產者消費者模型、管道、程序池及其返回值!
毛毛Python進階之路4——訊號量、事件、佇列、生產者消費者模型、管道、程序池及其返回值! 1、訊號量 上次我們講到了鎖,可以控制某段程式在同一時間內只能被一個程序鎖訪問。現在我想被兩個程序訪問,或者更多怎麼辦了?訊號量就由此而生! 這就是訊號量做的事!這段程式我可以指定
Python之路(第三十八篇) 併發程式設計:程序同步鎖/互斥鎖、訊號量、事件、佇列、生產者消費者模型
一、程序鎖(同步鎖/互斥鎖) 程序之間資料不共享,但是共享同一套檔案系統,所以訪問同一個檔案,或同一個列印終端,是沒有問題的, 而共享帶來的是競爭,競爭帶來的結果就是錯亂,如何控制,就是加鎖處理。 例子 #併發執行,效率高,但競爭同一列印終端,帶來了列印錯亂 from multiproc
綜合運用: C++11 多線程下生產者消費者模型詳解(轉)
並發 rep 生產 我會 交流 模型 操作 const ref 生產者消費者問題是多線程並發中一個非常經典的問題,相信學過操作系統課程的同學都清楚這個問題的根源。本文將就四種情況分析並介紹生產者和消費者問題,它們分別是:單生產者-單消費者模型,單生產者-多消費者模型,多生產
python學習——day9(ssh,線程和進程,信號量,隊列,生產者消費者模型) Alex地址:http://www.cnblogs.com/alex3714/articles/5230609.html
png 接口 count() day bound 共享 car 共享內存 top 一、python上模擬ssh 1.ssh,ssh_ftp pass 2.ssh 密鑰 pass 二、線程,進程 定義: 進程: 是對各種資源管理的集合,qq 要以一個整體的形式暴露給操
java並發之生產者消費者模型
isf tof on() acc sum sca span empty poll 生產者和消費者模型是操作系統中經典的同步問題。該問題最早由Dijkstra提出,用以