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中的yield浅析
Jun 16 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
python检测IP地址变化并触发事件
Dec 26 Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
Python中six模块基础用法
Dec 08 Python
tensorflow 限制显存大小的实现
Feb 03 Python
Python基础之字符串操作常用函数集合
Feb 09 Python
Python中的整除和取模实例
Jun 03 Python
Python正则re模块使用步骤及原理解析
Aug 18 Python
python使用pygame创建精灵Sprite
Apr 06 Python
PO模式在selenium自动化测试框架的优势
Mar 20 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 curl选项列表(超详细)
2013/07/01 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
php邮件发送的两种方式
2020/04/28 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
javascript委托(Delegate)blur和focus用法实例分析
2015/05/26 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
layui使用label标签的方法
2019/09/14 Javascript
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
python如何生成网页验证码
2018/07/28 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
详解python的变量缓存机制
2021/01/24 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
个人简历中的自我评价怎么写
2014/01/26 职场文书
美术教师个人总结
2015/02/06 职场文书
教师节倡议书2015
2015/04/27 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
Golang并发工具Singleflight
2022/05/06 Golang