0
我正在嘗試創建一個模擬商店結帳的程序。我允許用戶輸入一堆數據,然後將它們傳遞到運行模擬的函數中。我正在使用我創建的Queue類,併爲我需要的(FIFO)工作。當我試圖讓客戶端進入到一個開放的服務器的隊列中,然後最終從隊列中刪除時,我的問題就出現了。一旦消失,服務器將從隊列中選擇下一個客戶端,依此類推。Python簽出模擬
下面是我的就是我有這麼遠代碼..
from queue_array import Queue
from customer import Customer
from server import Server
import random, copy
def line_up (total_time, num_servers, max_num_clients_per_min, max_service, min_service, freakout_chance, min_freak, max_freak):
q = Queue()
s = []
customer_id = 0
server_id = 0
max_queue_size = 0
serving = 0
customers_served = 0
is_serving = False
for _se in range(num_servers):
server = Server(server_id, None)
s.append(server)
server_id += 1
#loop through each minute
for time in range(0, total_time + 1):
print ("Time = {}".format(time))
num_join = random.randint(0, max_num_clients_per_min)
#Determine when customer joins the queue
for _i in range(0, num_join):
print (" Client {} joins the queue.".format(customer_id))
service_length = random.randint(min_service, max_service)
f = random.randint(1, freakout_chance)
if f == 1:
freak = True
else:
freak = False
customer = Customer(customer_id, copy.deepcopy(time), service_length, freak)
q.insert(customer)
customer_id += 1
if len(q) > max_queue_size:
max_queue_size = len(q)
for serve in s:
if serve.client is None:
n = serve.number
print (" Server {} starting to serve Client {}".format(n, q.peek().number))
line_up(5, 3, 2, 5, 1, 1000, 0, 5)
所以這裏這個代碼呼籲我的Queue類藏漢爲我做了一些其他的小課程。我不包括他們,因爲我不認爲我需要將他們包括在我需要幫助的東西中。
我的問題是,我如何獲得已放入列表的服務器,以便每次一個客戶端從隊列中取出一個客戶端,然後一旦他們完成服務,將它們從隊列中移除並採取下一個。
我希望我很清楚,請評論,如果你需要更多的澄清。