python多線程實(shí)現(xiàn)代碼(模擬銀行服務(wù)操作流程)
1.模擬銀行服務(wù)完成程序代碼
目前,在以銀行營(yíng)業(yè)大廳為代表的窗口行業(yè)中大量使用排隊(duì)(叫號(hào))系統(tǒng),該系統(tǒng)完全模擬了人群排隊(duì)全過(guò)程,通過(guò)取票進(jìn)隊(duì)、排隊(duì)等待、叫號(hào)服務(wù)等功能,代替了人們站隊(duì)的辛苦。
排隊(duì)叫號(hào)軟件的具體操作流程為:
顧客取服務(wù)序號(hào)
當(dāng)顧客抵達(dá)服務(wù)大廳時(shí),前往放置在入口處旁的取號(hào)機(jī),并按一下其上的相應(yīng)服務(wù)按鈕,取號(hào)機(jī)會(huì)自動(dòng)打印出一張服務(wù)單。單上顯示服務(wù)號(hào)及該服務(wù)號(hào)前面正在等待服務(wù)的人數(shù)。
服務(wù)員工呼叫顧客
服務(wù)員工只需按一下其柜臺(tái)上呼叫器的相應(yīng)按鈕,則顧客的服務(wù)號(hào)就會(huì)按順序的顯示在顯示屏上,并發(fā)出“叮咚”和相關(guān)語(yǔ)音信息,提示顧客前往該窗口辦事。當(dāng)一位顧客辦事完畢后,柜臺(tái)服務(wù)員工只需按呼叫器相應(yīng)鍵,即可自動(dòng)呼叫下一位顧客。
編寫程序模擬上面的工作過(guò)程,主要要求如下:
程序運(yùn)行后,當(dāng)看到“請(qǐng)點(diǎn)擊觸摸屏獲取號(hào)碼:”的提示時(shí),只要按回車鍵,即可顯示“您的號(hào)碼是:XXX,您前面有 YYY 位”的提示,其中XXX 是所獲得的服務(wù)號(hào)碼,YYY 是在 XXX 之前來(lái)到的正在等待服務(wù)的人數(shù)。
用多線程技術(shù)模擬服務(wù)窗口(可模擬多個(gè)),具有服務(wù)員呼叫顧客的行為,假設(shè)每個(gè)顧客服務(wù)的時(shí)間是10000ms,時(shí)間到后,顯示“請(qǐng) XXX 號(hào)到 ZZZ 號(hào)窗口!”的提示。其中 ZZZ 是即將為客戶服務(wù)的窗口號(hào)。
代碼:
以下為 python 實(shí)現(xiàn):
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
# 服務(wù)器
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('請(qǐng) %d 號(hào)到 %s 號(hào)窗口' % (self.bankQueue._head.data, threading.current_thread().name))
self.bankQueue.dequeue()
# time.sleep(10)
else:
print('隊(duì)列為空哦')
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('請(qǐng)點(diǎn)擊觸摸屏獲取號(hào)碼:')
callNumber = bankQueue.getCallNumber()
if bankQueue != None:
print('您的號(hào)碼是:%d,您前面有 %d 位' % (callNumber, bankQueue.getLength()))
bankQueue.enqueue(callNumber)
else:
print('您的號(hào)碼是:%d,您前面有 0 位' % (callNumber))
結(jié)果截圖:

總結(jié)
以上所述是小編給大家介紹的python多線程實(shí)現(xiàn)代碼(模擬銀行服務(wù)操作流程),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- python多線程實(shí)現(xiàn)同時(shí)執(zhí)行兩個(gè)while循環(huán)的操作
- 解決python多線程報(bào)錯(cuò):AttributeError: Can''t pickle local object問(wèn)題
- python GUI庫(kù)圖形界面開發(fā)之PyQt5多線程中信號(hào)與槽的詳細(xì)使用方法與實(shí)例
- python kafka 多線程消費(fèi)者&手動(dòng)提交實(shí)例
- python實(shí)現(xiàn)自動(dòng)化報(bào)表功能(Oracle/plsql/Excel/多線程)
- python 實(shí)現(xiàn)多線程下載視頻的代碼
- python 實(shí)現(xiàn)多線程下載m3u8格式視頻并使用fmmpeg合并
- Python多線程正確用法實(shí)例解析
相關(guān)文章
Python還能這么玩之用Python做個(gè)小游戲的外掛
玩過(guò)電腦游戲的同學(xué)對(duì)于外掛肯定不陌生,但是你在用外掛的時(shí)候有沒(méi)有想過(guò)外掛怎么制作出來(lái)的呢?現(xiàn)在來(lái)看一下怎么制作一個(gè)外掛,首先說(shuō)下,這里的游戲外掛的概念,和那些大型網(wǎng)游里的外掛可不同,不能自動(dòng)打怪,主要為了提高一下編程技術(shù),需要的朋友可以參考下2021-06-06
Python多進(jìn)程入門、分布式進(jìn)程數(shù)據(jù)共享實(shí)例詳解
這篇文章主要介紹了Python多進(jìn)程入門、分布式進(jìn)程數(shù)據(jù)共享,結(jié)合實(shí)例形式詳細(xì)分析了Python進(jìn)程操作技巧數(shù)據(jù)共享相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2019-06-06
Python如何基于rsa模塊實(shí)現(xiàn)非對(duì)稱加密與解密
這篇文章主要介紹了Python如何基于rsa模塊實(shí)現(xiàn)非對(duì)稱加密與解密,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
Python 安裝第三方庫(kù) pip install 安裝慢安裝不上的解決辦法
很多朋友反映在使用pip install安裝python 第三方庫(kù)的過(guò)程中會(huì)出現(xiàn)網(wǎng)速很慢,或者是安裝下載到中途,停止,卡主,或者是下載報(bào)錯(cuò)等問(wèn)題,下面小編給大家?guī)?lái)了解決方法,一起看看吧2019-06-06
python實(shí)現(xiàn)Adapter模式實(shí)例代碼
這篇文章主要介紹了python實(shí)現(xiàn)Adapter模式實(shí)例代碼,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
Django高級(jí)編程之自定義Field實(shí)現(xiàn)多語(yǔ)言
這篇文章主要介紹了Django高級(jí)編程之自定義Field實(shí)現(xiàn)多語(yǔ)言,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

