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

高洛峰
Libérer: 2017-03-22 09:38:08
original
1599 Les gens l'ont consulté

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal