python多线程实现代码(模拟银行服务操作流程)
1.模拟银行服务完成程序代码
目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队、排队等待、叫号服务等功能,代替了人们站队的辛苦。
排队叫号软件的具体操作流程为:
顾客取服务序号
当顾客抵达服务大厅时,前往放置在入口处旁的取号机,并按一下其上的相应服务按钮,取号机会自动打印出一张服务单。单上显示服务号及该服务号前面正在等待服务的人数。
服务员工呼叫顾客
服务员工只需按一下其柜台上呼叫器的相应按钮,则顾客的服务号就会按顺序的显示在显示屏上,并发出“叮咚”和相关语音信息,提示顾客前往该窗口办事。当一位顾客办事完毕后,柜台服务员工只需按呼叫器相应键,即可自动呼叫下一位顾客。
编写程序模拟上面的工作过程,主要要求如下:
程序运行后,当看到“请点击触摸屏获取号码:”的提示时,只要按回车键,即可显示“您的号码是:XXX,您前面有YYY位”的提示,其中XXX是所获得的服务号码,YYY是在XXX之前来到的正在等待服务的人数。
用多线程技术模拟服务窗口(可模拟多个),具有服务员呼叫顾客的行为,假设每个顾客服务的时间是10000ms,时间到后,显示“请XXX号到ZZZ号窗口!”的提示。其中ZZZ是即将为客户服务的窗口号。
代码:
以下为python实现:
fromTask04_Queue.linkedQueueimportLinkedQueue importthreading importtime classLinkBankQueue(LinkedQueue): def__init__(self): LinkedQueue.__init__(self) self.callNumber=0 defgetCallNumber(self): ifself.is_empty()andself.callNumber==0: self.callNumber=1 else: self.callNumber+=1 returnself.callNumber defgetLength(self): ifself.is_empty(): return0 else: cur=self._head len=1 whilecur!=self._tail: cur=cur.next len+=1 returnlen #服务器 classServiceWindow(threading.Thread): def__init__(self): threading.Thread.__init__(self) self.bankQueue=None self.lock=threading.Lock() defservice(self): self.lock.acquire() whileTrue: time.sleep(20) try: ifnotself.bankQueue.is_empty(): print('请%d号到%s号窗口'%(self.bankQueue._head.data,threading.current_thread().name)) self.bankQueue.dequeue() #time.sleep(10) else: print('队列为空哦') finally: self.lock.release() #客户端 if__name__=='__main__': bankQueue=LinkBankQueue() windowcount=2 serviceWindows=[None]*windowcount threadList=[None]*windowcount foriinrange(windowcount): serviceWindows[i]=ServiceWindow() serviceWindows[i].bankQueue=bankQueue threadList[i]=threading.Thread(name=(i+1),target=serviceWindows[i].service,args=()) threadList[i].start() whileTrue: input('请点击触摸屏获取号码:') callNumber=bankQueue.getCallNumber() ifbankQueue!=None: print('您的号码是:%d,您前面有%d位'%(callNumber,bankQueue.getLength())) bankQueue.enqueue(callNumber) else: print('您的号码是:%d,您前面有0位'%(callNumber))
结果截图:
总结
以上所述是小编给大家介绍的python多线程实现代码(模拟银行服务操作流程),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。