>백엔드 개발 >파이썬 튜토리얼 >Python 생성기를 사용하여 생산자-소비자 모델을 구현하는 방법 소개

Python 생성기를 사용하여 생산자-소비자 모델을 구현하는 방법 소개

高洛峰
高洛峰원래의
2017-03-22 09:38:081595검색

생성기와 같은 개체가 없다고 가정하면 이 간단한 "생산자-소비자" 모델을 어떻게 구현합니까?

가져오기 시간

def producer():

pro_list = []

for i in range(10000):

인쇄 "Baozi %s 만들기" %(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 "%s 사람이 %s 빵을 먹었습니다" %( index, stuffed_bun)

pro_list = producer()

consumer(pro_list)

위의 생산자 및 소비자 모델은 심각한 문제를 안고 있습니다. 즉, 극도로 비효율적이며, " 생산' 과정에서 소비자는 빵을 모두 먹기 전에 빵이 모두 생산될 때까지 기다려야 합니다. 이 모델은 비효율적이고 불합리합니다.

효율성을 높이려면 생산 프로세스를 수정해야 합니다. 생산과 소비 프로세스는 두 개의 독립적인 개체여야 하며 생산과 소비는 "동시에" 작동해야 합니다.

가져오기 시간

def Consumer(name):

print '나는 %s, 빵을 먹을 준비가 되었습니다' %(name)

while True :

        stuffed_bun = Yield

        time.sleep(1)

                                                     off 's ' s ' s ‐ ‐ ‐ % ~ %s ~ %(이름, stuffed_bun )

def producer():

p1 = 소비자("suhaozhi")

p2 = 소비자("ayumi")

p1.next( ) # 다음 메서드를 실행한 후 무한 루프가 시작됩니다.

p2.next()

for i in range(10):

time.sleep(1)

p1.send("Bun %s" %(i)) # send를 통해 Yield에 값을 할당하면 Yield는 stuffed_bun에 값을 할당합니다

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

제작자()

위 내용은 Python 생성기를 사용하여 생산자-소비자 모델을 구현하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.