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 相关文章推荐
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
python中global用法实例分析
Apr 30 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
完美解决python中ndarray 默认用科学计数法显示的问题
Jul 14 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
Jan 22 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
解决python中画图时x,y轴名称出现中文乱码的问题
Jan 29 Python
python机器学习实现决策树
Nov 11 Python
python 解压、复制、删除 文件的实例代码
Feb 26 Python
Python操作MongoDb数据库流程详解
Mar 05 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 Python
python 实现德洛内三角剖分的操作
Apr 22 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
咖啡知识大全
2021/03/03 新手入门
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
javascript 数组操作详解
2015/01/29 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
js+html5实现复制文字按钮
2017/07/15 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
深入理解Python中的元类(metaclass)
2015/02/14 Python
Python paramiko模块的使用示例
2018/04/11 Python
创建pycharm的自定义python模板方法
2018/05/23 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
Python文件操作方法详解
2020/02/09 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
团队精神的演讲稿
2014/05/14 职场文书
初中作文评语
2014/12/25 职场文书
团日活动总结格式
2015/05/11 职场文书
病房管理制度范本
2015/08/06 职场文书
Nginx实现负载均衡的项目实践
2022/03/18 Servers