python多线程怎么实现
小编给大家分享一下python多线程怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1.模拟银行服务完成程序代码
目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队、排队等待、叫号服务等功能,代替了人们站队的辛苦。
排队叫号软件的具体操作流程为:
顾客取服务序号
当顾客抵达服务大厅时,前往放置在入口处旁的取号机,并按一下其上的相应服务按钮,取号机会自动打印出一张服务单。单上显示服务号及该服务号前面正在等待服务的人数。
服务员工呼叫顾客
服务员工只需按一下其柜台上呼叫器的相应按钮,则顾客的服务号就会按顺序的显示在显示屏上,并发出“叮咚”和相关语音信息,提示顾客前往该窗口办事。当一位顾客办事完毕后,柜台服务员工只需按呼叫器相应键,即可自动呼叫下一位顾客。
编写程序模拟上面的工作过程,主要要求如下:
程序运行后,当看到“请点击触摸屏获取号码:”的提示时,只要按回车键,即可显示“您的号码是:XXX,您前面有 YYY 位”的提示,其中XXX 是所获得的服务号码,YYY 是在 XXX 之前来到的正在等待服务的人数。
用多线程技术模拟服务窗口(可模拟多个),具有服务员呼叫顾客的行为,假设每个顾客服务的时间是10000ms,时间到后,显示“请 XXX 号到 ZZZ 号窗口!”的提示。其中 ZZZ 是即将为客户服务的窗口号。
代码:
以下为 python 实现:
fromTask04_Queue.linkedQueueimportLinkedQueue
importthreading
importtime
classLinkBankQueue(LinkedQueue):
def__init__(self):
LinkedQueue.__init__(self)
self.callNumber=0
defgetCallNumber(self):
ifself.is_empty()andself.callNumber==0:
self.callNumber=1
else:
self.callNumber+=1
returnself.callNumber
defgetLength(self):
ifself.is_empty():
return0
else:
cur=self._head
len=1
whilecur!=self._tail:
cur=cur.next
len+=1
returnlen
#服务器
classServiceWindow(threading.Thread):
def__init__(self):
threading.Thread.__init__(self)
self.bankQueue=None
self.lock=threading.Lock()
defservice(self):
self.lock.acquire()
whileTrue:
time.sleep(20)
try:
ifnotself.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
foriinrange(windowcount):
serviceWindows[i]=ServiceWindow()
serviceWindows[i].bankQueue=bankQueue
threadList[i]=threading.Thread(name=(i+1),target=serviceWindows[i].service,args=())
threadList[i].start()
whileTrue:
input('请点击触摸屏获取号码:')
callNumber=bankQueue.getCallNumber()
ifbankQueue!=None:
print('您的号码是:%d,您前面有%d位'%(callNumber,bankQueue.getLength()))
bankQueue.enqueue(callNumber)
else:
print('您的号码是:%d,您前面有0位'%(callNumber))结果截图:
以上是“python多线程怎么实现”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
一文教你Python如何快速精准抓取网页数据
本文将使用requests和beautifulsoup这两个流行的库来实现。1.准备工作首先安装必要的库:pipinst...
-
使用Python实现IP地址和端口状态检测与监控
-
基于Python打造一个智能单词管理神器
-
Python实现微信自动锁定工具
-
使用Python创建一个功能完整的Windows风格计算器程序
python实现windows系统计算器程序(含高级功能)下面我将介绍如何使用python创建一个功能完整的windows风格计...
-
Python开发文字版随机事件游戏的项目实例
随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型。在这类游戏中,玩家必须应对随机发生的情况,这些情况可能会影响他们的资...
-
使用Pandas实现Excel中的数据透视表的项目实践
引言在数据分析中,数据透视表是一种非常强大的工具,它可以帮助我们快速汇总、分析和可视化大量数据。虽然excel提供了内置的数据透...
-
Pandas利用主表更新子表指定列小技巧
一、前言工作的小技巧,利用pandas读取主表和子表,利用主表的指定列,更新子表的指定列。案例:主表:uidname0...
-
Pandas中统计汇总可视化函数plot()的使用
-
Python中tensorflow的argmax()函数的使用小结
在tensorflow中,argmax()函数是一个非常重要的操作,它用于返回给定张量(tensor)沿指定轴的最大值的索引。这个...
