1
Hello I am trying to do in python3 the famous problem of the producer/consumer, transcribing from my book of S.O. however I have been facing a problem , apparently the Wait() Just put it to sleep once in the loop or something, because just after the first time the threads run loose. code:
# -*- coding: utf-8 -*-
import threading
acordar_dormir_produtor = threading.Event()
acordar_dormir_consumidor = threading.Event()
bufer = 0
bufer_max = 10
def consumidor():
global acordar_dormir_produtor
global acordar_dormir_consumidor
global bufer
global bufer_max
while True:
if bufer == 0:
print ("consumidor dormindo")
acordar_dormir_consumidor.wait()
print ("consumidor acordou")
bufer = bufer - 1
if bufer == (bufer_max - 1):
print ("distracando produtor")
acordar_dormir_produtor.set()
acordar_dormir_produtor.clear()
print ("consumidor",bufer)
def produtor():
global acordar_dormir_produtor
global acordar_dormir_consumidor
global bufer
global bufer_max
while True:
if bufer == bufer_max:
print ("produtor dormindo")
acordar_dormir_produtor.wait()
print ("produtor acordou")
bufer = bufer + 1
if bufer == 1:
print ("distracando consumidor")
acordar_dormir_consumidor.set()
acordar_dormir_produtor.clear()
print ("produtor ",bufer)
print (bufer)
b = threading.Thread(target=produtor)
a = threading.Thread(target=consumidor)
a.start()
b.start()
#while True:
# time.sleep(3)
# print (bufer)
how to do this? has another object since the Event doesn’t work? I tried the conditions unsuccessfully(actually didn’t even get to perform)