Maison >développement back-end >Tutoriel Python >Introduction à la méthode de mise en œuvre du modèle producteur-consommateur à l'aide de générateurs python

Introduction à la méthode de mise en œuvre du modèle producteur-consommateur à l'aide de générateurs python

高洛峰
高洛峰original
2017-03-22 09:38:081608parcourir

Supposons qu'il n'existe pas d'objet tel qu'un générateur, alors comment mettre en œuvre ce simple modèle « producteur-consommateur » ?

temps d'importation

def producteur():

pro_list = []

pour i dans la plage (10000):

imprimer "Baozi %s making" %(i)

time.sleep(0.5)

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

return pro_list

def consumer(pro_list):

for index,stuffed_bun in enumerate(pro_list):

print "La personne %s a mangé le petit pain %s" %( index, stuffed_bun)

pro_list = producteur()

consommateur(pro_list)

Le modèle de producteur et de consommateur ci-dessus a un sérieux problème, c'est-à-dire qu'il est extrêmement inefficace, et pendant le " "de production", les consommateurs doivent attendre que tous les petits pains soient produits avant de pouvoir les manger. Ce modèle est inefficace et déraisonnable.

Si vous souhaitez améliorer l'efficacité, vous devez modifier le processus de production. Les processus de production et de consommation doivent être deux entités indépendantes. La production et la consommation doivent fonctionner « simultanément » (simultanément).

temps d'importation

def consumer(name):

imprimer 'Je suis %s, prêt à manger des petits pains' %(name)

while True :

        stuffed_bun = rendement

        time.sleep(1)

                                                ' ' s ' s ' s ' s t ‐ à %s à ​🎜>

def producteur( ):

p1 = consumer("suhaozhi")

p2 = consumer("ayumi")

p1.next() # Après avoir exécuté la méthode suivante, l'infini la boucle commence

p2.next()

pour i dans range(10):

time.sleep(1)

p1.send(" Bun %s" %(i)) #Attribuez une valeur à rendement via l'envoi, et rendement attribuera la valeur à stuffed_bun

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

producteur()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn