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和pyqt实现360的CLable控件
Feb 21 Python
整理Python最基本的操作字典的方法
Apr 24 Python
基于Python Shell获取hostname和fqdn释疑
Jan 25 Python
python读取excel表格生成erlang数据
Aug 26 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
python 通过可变参数计算n个数的乘积方法
Jun 13 Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 Python
Python实现快速大文件比较代码解析
Sep 04 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
python爬取2021猫眼票房字体加密实例
Feb 19 Python
python如何利用cv2.rectangle()绘制矩形框
Dec 24 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
IStream与TStream之间的相互转换
2008/08/01 PHP
php多用户读写文件冲突的解决办法
2013/11/06 PHP
Chrome Web App开发小结
2014/09/04 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
firefo xml 读写实现js代码
2009/06/11 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
使用jQuery实现的掷色子游戏动画效果
2014/03/14 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
微信小程序实现打卡签到页面
2020/09/21 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
python PyTorch参数初始化和Finetune
2018/02/11 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
python读写文件write和flush的实现方式
2020/02/21 Python
基于opencv实现简单画板功能
2020/08/02 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
Python存储读取HDF5文件代码解析
2020/11/25 Python
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
活动策划求职信模板
2014/04/21 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS