Python 시 뮬 레이 션 생산자 소비자 모델 구현 실례 상세 설명

Python 시 뮬 레이 션 생산자 소비자 모델 구현 실례 상세 설명
산 선 은 python 3.4 시 뮬 레이 션 을 사용 하여 실 현 된 생산자 와 소비자 의 예 를 들 어 사용 하 는 지식 은 스 레 드,대기 열,순환 등 이 있 고 소스 코드 는 다음 과 같다.
파 이 썬 코드

import queue 
import time 
import threading 
import random 
 
 
q=queue.Queue(5) 
 
#    
def pr(): 
  name=threading.current_thread().getName() 
  print(name+"    ......") 
  for i in range(100): 
    t=random.randint(2,9) 
    print(name,"    : ",t) 
    time.sleep(t); 
    d="A"+str(i) 
    print(name+"    ",i+1,"   : ",d) 
    #q.put("A"+str(i),False,2000) 
    q.put(d) 
  print("    !") 
 
 
#    
def co(): 
  name=threading.current_thread().getName() 
  time.sleep(1) 
  print(name+"    ......") 
 
  while True: 
    print(name+"       : ",q.qsize()) 
    t=random.randint(2,9) 
    print(name,"    : ",t) 
    data=q.get(); 
    print(name+"      : ",data) 
 
 
 
 
p=threading.Thread(target=pr,name="   ") 
c=threading.Thread(target=co,name="   1") 
c2=threading.Thread(target=co,name="   2") 
 
p.start() 
c.start() 
c2.start() 

이 사례 에서 산 선 은 생산자 스 레 드 1 개,소비자 스 레 드 2 개 를 작 동 시 켰 고 인쇄 효 과 는 다음 과 같다.
파 이 썬 코드 

       ...... 
        : 4 
   1    ...... 
   1       : 0 
   1     : 2 
   2    ...... 
   2       : 0 
   2     : 3 
        1    : A0 
        : 9 
   1      : A0 
   1       : 0 
   1     : 8 
        2    : A1 
        : 5 
   2      : A1 
   2       : 0 
   2     : 7 
        3    : A2 
        : 8 
   1      : A2 
   1       : 0 
   1     : 2 
        4    : A3 
        : 7 
   2      : A3 
   2       : 0 
   2     : 9 
        5    : A4 
        : 2 
   1      : A4 
   1       : 0 
   1     : 5 
        6    : A5 
        : 5 
   2      : A5 
   2       : 0 
   2     : 6 
        7    : A6 
        : 7 
   1      : A6 
   1       : 0 
   1     : 7 
        8    : A7 
        : 3 
   2      : A7 
   2       : 0 
   2     : 8 
        9    : A8 
        : 2 
   1      : A8 
   1       : 0 
   1     : 4 
        10    : A9 
        : 4 
   2      : A9 
   2       : 0 
   2     : 5 
        11    : A10 
        : 2 
   1      : A10 
   1       : 0 
   1     : 3 
        12    : A11 
        : 3 
   2      : A11 
   2       : 0 
   2     : 3 
        13    : A12 
        : 3 
   1      : A12 
   1       : 0 
   1     : 3 
        14    : A13 
        : 8 
   2      : A13 
   2       : 0 
   2     : 7 
        15    : A14 
        : 3 
   1      : A14 
   1       : 0 
   1     : 7 
        16    : A15 
        : 2 
   2      : A15 
   2       : 0 
   2     : 9 

이 예 에서 우 리 는 대열 을 이용 하여 동기 화 를 할 때 매우 간단 하고 편리 하 다 는 것 을 발견 했다.그 밖 에 대열 은 다음 과 같은 몇 가지 편리 한 방법 이 있다.
이 가방 에서 자주 사용 하 는 방법 을 소개 합 니 다.   

Queue.qsize()          
Queue.empty()       ,  True,  False  
Queue.full()       ,  True,  False 
Queue.full   maxsize       
Queue.get([block[, timeout]])    ,timeout      
Queue.get_nowait()   Queue.get(False) 
    Queue.put(item)     ,timeout      
Queue.put_nowait(item)   Queue.put(item, False) 
Queue.task_done()          ,Queue.task_done()                   
Queue.join()             ,        
이상 은 Python 이 생산자 소비자 모델 을 모 의 실현 하 는 사례 를 상세 하 게 설명 하 는 것 입 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 지역사회 에 가서 토론 하 십시오.읽 어 주 셔 서 감사합니다. 여러분 께 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기