91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python多線程怎么實現

發布時間:2021-05-28 10:37:34 來源:億速云 閱讀:145 作者:小新 欄目:開發技術

小編給大家分享一下python多線程怎么實現,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

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多線程怎么實現”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东阿县| 都江堰市| 鄄城县| 南平市| 肥东县| 镇江市| 浮梁县| 罗源县| 锡林郭勒盟| 怀远县| 永德县| 朝阳市| 青龙| 滨海县| 西昌市| 北安市| 腾冲县| 东乌珠穆沁旗| 和顺县| 高唐县| 内江市| 延吉市| 仪陇县| 玛纳斯县| 河东区| 乌拉特前旗| 聊城市| 顺昌县| 辽源市| 包头市| 阿克陶县| 平罗县| 华坪县| 巩义市| 盐山县| 恭城| 仪陇县| 旌德县| 高台县| 江陵县| 大厂|