python多线程实现代码(模拟银行服务操作流程)


Posted in Python onJanuary 13, 2020

1.模拟银行服务完成程序代码

目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队、排队等待、叫号服务等功能,代替了人们站队的辛苦。

排队叫号软件的具体操作流程为:

顾客取服务序号

当顾客抵达服务大厅时,前往放置在入口处旁的取号机,并按一下其上的相应服务按钮,取号机会自动打印出一张服务单。单上显示服务号及该服务号前面正在等待服务的人数。

服务员工呼叫顾客

服务员工只需按一下其柜台上呼叫器的相应按钮,则顾客的服务号就会按顺序的显示在显示屏上,并发出“叮咚”和相关语音信息,提示顾客前往该窗口办事。当一位顾客办事完毕后,柜台服务员工只需按呼叫器相应键,即可自动呼叫下一位顾客。

编写程序模拟上面的工作过程,主要要求如下:

程序运行后,当看到“请点击触摸屏获取号码:”的提示时,只要按回车键,即可显示“您的号码是:XXX,您前面有 YYY 位”的提示,其中XXX 是所获得的服务号码,YYY 是在 XXX 之前来到的正在等待服务的人数。

用多线程技术模拟服务窗口(可模拟多个),具有服务员呼叫顾客的行为,假设每个顾客服务的时间是10000ms,时间到后,显示“请 XXX 号到 ZZZ 号窗口!”的提示。其中 ZZZ 是即将为客户服务的窗口号。

代码:

以下为 python 实现:

from Task04_Queue.linkedQueue import LinkedQueue
import threading
import time
class LinkBankQueue(LinkedQueue):
 def __init__(self):
  LinkedQueue.__init__(self)
  self.callNumber = 0
 def getCallNumber(self):
  if self.is_empty() and self.callNumber == 0:
   self.callNumber = 1
  else:
   self.callNumber += 1
  return self.callNumber
 def getLength(self):
  if self.is_empty():
   return 0
  else:
   cur = self._head
   len = 1
   while cur != self._tail:
    cur = cur.next
    len += 1
   return len
# 服务器
class ServiceWindow(threading.Thread):
 def __init__(self):
  threading.Thread.__init__(self)
  self.bankQueue = None
  self.lock = threading.Lock()
 def service(self):
  self.lock.acquire()
  while True:
   time.sleep(20)
   try:
    if not self.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
 for i in range(windowcount):
  serviceWindows[i] = ServiceWindow()
  serviceWindows[i].bankQueue = bankQueue
  threadList[i] = threading.Thread(name=(i + 1), target=serviceWindows[i].service, args=())
  threadList[i].start()
 while True:
  input('请点击触摸屏获取号码:')
  callNumber = bankQueue.getCallNumber()
  if bankQueue != None:
   print('您的号码是:%d,您前面有 %d 位' % (callNumber, bankQueue.getLength()))
   bankQueue.enqueue(callNumber)
  else:
   print('您的号码是:%d,您前面有 0 位' % (callNumber))

结果截图:

python多线程实现代码(模拟银行服务操作流程)

总结

以上所述是小编给大家介绍的python多线程实现代码(模拟银行服务操作流程),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python通过zlib实现压缩与解压字符串的方法
Nov 19 Python
探究数组排序提升Python程序的循环的运行效率的原因
Apr 01 Python
以一个投票程序的实例来讲解Python的Django框架使用
Feb 18 Python
对python中return和print的一些理解
Aug 18 Python
Python基于time模块求程序运行时间的方法
Sep 18 Python
Python基于回溯法解决01背包问题实例
Dec 06 Python
Python爬虫之正则表达式基本用法实例分析
Aug 08 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
python实现微信防撤回神器
Apr 29 Python
Python中字符串与编码示例代码
May 20 Python
python的reverse函数翻转结果为None的问题
May 11 Python
python实现图片转字符画
Feb 19 Python
Python timeit模块的使用实践
Jan 13 #Python
Python 列表的清空方式
Jan 13 #Python
Python SSL证书验证问题解决方案
Jan 13 #Python
python清空命令行方式
Jan 13 #Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 #Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 #Python
python中的itertools的使用详解
Jan 13 #Python
You might like
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
[原创]pip和pygal的安装实例教程
2017/12/07 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
Python何时应该使用Lambda函数
2019/07/02 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
教师申诉制度
2014/01/29 职场文书
新春文艺演出主持词
2014/03/27 职场文书
个人培训自我鉴定
2014/03/28 职场文书
父母对孩子的寄语
2014/04/09 职场文书
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年工程工作总结
2014/11/25 职场文书
2014年手术室工作总结
2014/11/26 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏