我正在尝试创建一个模拟,其中有两台打印机,我找到了每台打印机的平均等待时间。我正在为程序中的打印机和任务使用一个类。基本上,我将每个模拟的等待时间添加到一个列表中,并计算平均时间。我的问题是,我得到一个0除错误,所以没有被附加。当我试着用一台打印机(本质上是一样的)我没有问题。这是第二台打印机的代码。我在用一个队列
if printers == 2:
for currentSecond in range(numSeconds):
if newPrintTask():
task = Task(currentSecond,minSize,maxSize)
printQueue.enqueue(task)
if (not labPrinter1.busy()) and (not labPrinter2.busy()) and \
(not printQueue.is_empty()):
nexttask = printQueue.dequeue()
waitingtimes.append(nexttask.waitTime(currentSecond))
labPrinter1.startNext(nexttask)
elif (not labPrinter1.busy()) and (labPrinter2.busy()) and \
(not printQueue.is_empty()):
nexttask = printQueue.dequeue()
waitingtimes.append(nexttask.waitTime(currentSecond))
labPrinter1.startNext(nexttask)
elif (not labPrinter2.busy()) and (labPrinter1.busy()) and \
(not printQueue.is_empty()):
nexttask = printQueue.dequeue()
waitingtimes.append(nexttask.waitTime(currentSecond))
labPrinter2.startNext(nexttask)
labPrinter1.tick()
labPrinter2.tick()
averageWait = sum(waitingtimes)/len(waitingtimes)
outfile.write("Average Wait %6.2f secs %3d tasks remaining." \
%(averageWait,printQueue.size()))
任何帮助都太好了!编辑:我应该提到,无论值是多少,这种情况都会发生。我可以有一个99-100的页面范围和1的PPM,但我仍然得到除以0
我认为您的问题源于第一次迭代时的空
waitingtimes
。如果队列中没有打印作业,并且从未插入等待时间,则将使用waitingtimes==[]
(空)到达循环的底部,然后执行以下操作:那将会是
哪个是
最简单的方法就是检查或者抓住它:
或:
相关问题 更多 >
编程相关推荐