스케쥴링 병렬 처리
- 웨이트 타임을 비교해, 우선 큐 지정 후 작업 할당.
import numpy as np
import queue
# Interval Time , Service time 변수
lamb=float(5)
mu = float(3)
# 큐생성
queue1 = queue.Queue()
queue2 = queue.Queue()
# 처음 작업이 들어오는 경우.
Fisrt_Arrival = np.random.exponential(lamb)
First_Service = np.random.exponential(mu)
# 처음 작업 출력.
print("First_Arrival : ", Fisrt_Arrival)
print("First_Service : ", First_Service)
print("---------------------------------------------------")
# 변수 통일을 위해 저장.
Next_Arrival = Fisrt_Arrival
Next_Service = First_Service
# 카운트 만큼 실행.
count = 0
wait = 0
Finish_time1 = 0
Finish_time2 = 0
while count<10:
count+=1
# queue 1인지 2인지 알려 줄 스위치. queue가 1이면 0, queue가 1이면 1
sw = 0
Now_queue=0
if (Finish_time1-Next_Arrival) <= (Finish_time2-Next_Arrival):
queue1.put(Next_Arrival+Next_Service+wait)
Now_queue = queue1
sw = 0
else:
queue2.put(Next_Arrival+Next_Service+wait)
Now_queue = queue2
sw = 1
# 도착 시간 갱신.
while Next_Arrival < Next_Service:
Next_Arrival += np.random.exponential(lamb)
Finish_time = Now_queue.get()
# 작업 종료 시간 가져오기.
if sw == 0 :
Finish_time1 = Finish_time
else:
Finish_time2 = Finish_time
if (Finish_time1-Next_Arrival) <= (Finish_time2-Next_Arrival):
if (Finish_time1 - Next_Arrival) > 0 :
wait = Finish_time1 - Next_Arrival
else:
wait = 0
else :
if (Finish_time2 - Next_Arrival) > 0 :
wait = Finish_time2 - Next_Arrival
else:
wait = 0
print("executed queue : %d" % (sw+1))
print("Finsh1 : ", Finish_time1)
print("Finsh2 : ", Finish_time2)
# 서비스 시간 갱신.
if Now_queue.empty():
Next_Service = Next_Arrival + np.random.exponential(mu)
else:
Next_Service = Next_Service + np.random.exponential(mu)
# 웨이트 시간 출력 및 시간..
print("Next_Arrival : ", Next_Arrival)
print("Next_Service : ", Next_Service)
# 웨이트 시간 없을때의 예외처리.
if(wait < 0):
print("Wait Time : 0")
wait = 0
else:
print("Wait Time : ", wait)
print("---------------------------------------------------")
'Study > Code' 카테고리의 다른 글
python 파일 이름 변경. os.rename (0) | 2018.12.01 |
---|---|
Python Google translate, py_translator (0) | 2018.11.27 |
python 출력 입력 값 받기. (0) | 2018.11.19 |
Python 크롤링 시 Only the following pseudo-classes are implemented: nth-of-type.오류 (1) | 2018.11.07 |
Python MM1 queue 파이썬MM1 큐잉 시스템. (2) | 2018.11.01 |