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算法输出1-9数组形成的结果为100的所有运算式
Nov 03 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
在python中实现对list求和及求积
Nov 14 Python
python_opencv用线段画封闭矩形的实例
Dec 05 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
jenkins配置python脚本定时任务过程图解
Oct 29 Python
python默认参数调用方法解析
Feb 09 Python
详解python logging日志传输
Jul 01 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
Dec 01 Python
python实现进度条的多种实现
Apr 29 Python
Python 用户输入和while循环的操作
May 23 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中的正则表达式以及模式匹配
2013/06/19 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
php数组指针操作详解
2017/02/14 PHP
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
js实现常用排序算法
2016/08/09 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
2019/08/07 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
wxPython实现带颜色的进度条
2019/11/19 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
德国网上药房:Apotal
2017/04/04 全球购物
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
24岁生日感言
2014/01/13 职场文书
20年同学聚会感言
2014/02/03 职场文书
建材投资建议书
2014/05/16 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
停车场管理制度范本
2015/08/05 职场文书
给学校的建议书400字
2015/09/14 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
SQL注入的实现以及防范示例详解
2021/06/02 MySQL