Heim >Backend-Entwicklung >Python-Tutorial >Einführung in die Methode zur Implementierung des Producer-Consumer-Modells mithilfe von Python-Generatoren

Einführung in die Methode zur Implementierung des Producer-Consumer-Modells mithilfe von Python-Generatoren

高洛峰
高洛峰Original
2017-03-22 09:38:081582Durchsuche

Angenommen, es gibt kein Objekt wie einen Generator. Wie implementiert man dann dieses einfache „Produzenten-Konsumenten“-Modell?

Importzeit

def Producer():

pro_list = []

für i in range(10000):

print „Baozi %s making“ %(i)

time.sleep(0.5)

pro_list.append("Baozi %s" %i)

return pro_list

def Consumer(pro_list):

für index, stuffed_bun in enumerate(pro_list):

print „Die %s Person hat das %s Brötchen gegessen“ %( index, stuffed_bun)

pro_list = Producer()

Consumer(pro_list)

Das obige Produzenten- und Konsumentenmodell weist ein ernstes Problem auf, das heißt, es ist äußerst ineffizient und während der „ Beim „Produktionsprozess“ müssen die Verbraucher warten, bis alle Brötchen produziert sind, bevor sie sie essen können. Dieses Modell ist ineffizient und unvernünftig.

Wenn Sie die Effizienz verbessern möchten, müssen Sie den Produktionsprozess ändern. Die Produktions- und Verbrauchsprozesse sollten zwei unabhängige Einheiten sein und Produktion und Verbrauch sollten „gleichzeitig“ (gleichzeitig) ablaufen.

Importzeit

def Consumer(name):

print 'Ich bin %s, bereit, Brötchen zu essen' %(name)

while True :

        stuffed_bun = yield

        time.sleep(1)

                                                  aus 's ' s 's ' s ‐ ‐ ‐ % zu %s zu %(name, stuffed_bun )

def Producer():

p1 = Consumer("suhaozhi")

p2 = Consumer("ayumi")

p1.next( ) # Nach der Ausführung der nächsten Methode beginnt die Endlosschleife

p2.next()

for i in range(10):

time.sleep(1)

p1.send("Bun %s" %(i)) #Weisen Sie yield über send einen Wert zu, und yield weist den Wert stuffed_bun zu

p2.send("Bun %s " %(i))

Produzent()

Das obige ist der detaillierte Inhalt vonEinführung in die Methode zur Implementierung des Producer-Consumer-Modells mithilfe von Python-Generatoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn