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 이 생산자 소비자 모델 을 모 의 실현 하 는 사례 를 상세 하 게 설명 하 는 것 입 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 지역사회 에 가서 토론 하 십시오.읽 어 주 셔 서 감사합니다. 여러분 께 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.