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 random模块常用方法
Nov 03 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
Nov 09 Python
python logging日志模块以及多进程日志详解
Apr 18 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
python的移位操作实现详解
Aug 21 Python
python3多线程知识点总结
Sep 26 Python
对Keras中predict()方法和predict_classes()方法的区别说明
Jun 09 Python
Python爬虫防封ip的一些技巧
Aug 06 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 23 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
弄清Pytorch显存的分配机制
Dec 10 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
杏林同学录(四)
2006/10/09 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
简单的抓取淘宝图片的Python爬虫
2014/12/25 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
应届生的求职推荐信范文
2013/11/30 职场文书
财产公证书样本
2014/04/04 职场文书
实习推荐信
2014/05/10 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
python小程序之飘落的银杏
2021/04/17 Python
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
常用的Python代码调试工具总结
2021/06/23 Python
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技
python井字棋游戏实现人机对战
2022/04/28 Python