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 相关文章推荐
PyMongo安装使用笔记
Apr 27 Python
python中argparse模块用法实例详解
Jun 03 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
python opencv实现运动检测
Jul 10 Python
python实现键盘控制鼠标移动
Nov 27 Python
Python3模拟登录操作实例分析
Mar 12 Python
Python将文字转成语音并读出来的实例详解
Jul 15 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
python读取指定字节长度的文本方法
Aug 27 Python
python os.path.isfile()因参数问题判断错误的解决
Nov 29 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 Python
python 插入日期数据到Oracle实例
Mar 02 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生成zip压缩文件的方法详解
2013/06/09 PHP
Destoon模板制作简明教程
2014/06/20 PHP
jQuery实现购物车数字加减效果
2015/03/14 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
[00:59]DOTA2背景故事第二期之四大基本法则
2020/07/07 DOTA
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
详解Python中的正则表达式的用法
2015/04/09 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
python实现简易动态时钟
2018/11/19 Python
python生成九宫格图片
2018/11/19 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
python add_argument()用法解析
2020/01/29 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
保洁主管岗位职责
2013/11/20 职场文书
公司出纳岗位职责
2013/12/07 职场文书
英语专业毕业生自荐信范文
2013/12/31 职场文书
模具设计与制造专业推荐信
2014/02/16 职场文书
设计大赛策划方案
2014/06/13 职场文书
2014年宣传工作总结
2014/11/18 职场文书
教师节主题班会教案
2015/08/17 职场文书
高中美术教学反思
2016/02/17 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
HTML基本元素标签介绍
2022/02/28 HTML / CSS