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)呼叫下一位顧客。
編寫(xiě)程序模擬上面的工作過(guò)程,主要要求如下:
程序運(yùn)行后,當(dāng)看到“請(qǐng)點(diǎn)擊觸摸屏獲取號(hào)碼:”的提示時(shí),只要按回車(chē)鍵,即可顯示“您的號(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 是即將為客戶(hù)服務(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()
# 客戶(hù)端
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ù)圖形界面開(kāi)發(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實(shí)現(xiàn)希爾伯特變換(Hilbert transform)的示例代碼
希爾伯特變換(Hilbert transform)是一個(gè)對(duì)函數(shù)產(chǎn)生定義域相同的函數(shù)的線性算子,而且希爾伯特變換在信號(hào)處理中很重要,所以本文和大家分享了Python實(shí)現(xiàn)希爾伯特變換的代碼,需要的可以參考一下2023-04-04
Python pymysql連接數(shù)據(jù)庫(kù)并將查詢(xún)結(jié)果轉(zhuǎn)化為Pandas dataframe
這篇文章主要為大家介紹了Python pymysql連接數(shù)據(jù)庫(kù)并將結(jié)果轉(zhuǎn)化為Pandas dataframe實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
Django進(jìn)階深入理解使用類(lèi)視圖和中間件示例
這篇文章主要為大家介紹了Django高級(jí)指南之深入理解和使用類(lèi)視圖和中間件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
tensorflow如何繼續(xù)訓(xùn)練之前保存的模型實(shí)例
今天小編就為大家分享一篇tensorflow如何繼續(xù)訓(xùn)練之前保存的模型實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
python3+PyQt5實(shí)現(xiàn)支持多線程的頁(yè)面索引器應(yīng)用程序
這篇文章主要為大家詳細(xì)介紹了python3+PyQt5實(shí)現(xiàn)支持多線程的頁(yè)面索引器應(yīng)用程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
TensorFlow加載模型時(shí)出錯(cuò)的解決方式
今天小編就為大家分享一篇TensorFlow加載模型時(shí)出錯(cuò)的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作
這篇文章主要介紹了python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
PyCharm實(shí)現(xiàn)本地恢復(fù)或查看歷史代碼
這篇文章主要介紹了PyCharm實(shí)現(xiàn)本地恢復(fù)或查看歷史代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02

