欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python利用多線程同步鎖實現(xiàn)多窗口訂票系統(tǒng)(推薦)

 更新時間:2019年12月22日 11:54:56   作者:蒙古國海軍總司令  
這篇文章主要介紹了Python利用多線程同步鎖實現(xiàn)多窗口訂票系統(tǒng),主要是利用threading.lock()通過實例代碼相結(jié)合給大家講解的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

利用Python實現(xiàn)多窗口訂票系統(tǒng),利用

threading.Lock()

避免出現(xiàn)一票多賣,無票也賣的情況,并規(guī)范化輸出情況。

代碼:

import threading
import time
tickets, lock = 20, threading.Lock()
class TicketWindows(threading.Thread):
 def __init__(self, window_name):
  threading.Thread.__init__(self)
  self.window_name = window_name
 def run(self):
  sell_tickets(self.window_name)
def sell_tickets(threadName):
 global tickets
 while tickets > 0:
  lock.acquire() # 加一個同步鎖,類似Java中的synchronized
  if tickets > 0:
   print(threadName, "準(zhǔn)備出票,還剩余票:", tickets, "張")
   tickets -= 1
   print(threadName, "賣出1張車票,還剩:", tickets, "張")
   print("----------------------------------")
  else:
   print("車票售空!")
  lock.release() # 釋放同步鎖
  try:
   time.sleep(1)
  except RuntimeError:
   print("error!")
if __name__ == '__main__':
 window1 = TicketWindows("窗口1")
 window2 = TicketWindows("窗口2")
 window3 = TicketWindows("窗口3")
 window1.start()
 window2.start()
 window3.start()
 window1.join()
 window2.join()
 window3.join()
 print("退出主線程")

輸出:

窗口1 準(zhǔn)備出票,還剩余票: 20 張
窗口1 賣出1張車票,還剩: 19 張
----------------------------------
窗口2 準(zhǔn)備出票,還剩余票: 19 張
窗口2 賣出1張車票,還剩: 18 張
----------------------------------
窗口3 準(zhǔn)備出票,還剩余票: 18 張
窗口3 賣出1張車票,還剩: 17 張
----------------------------------
窗口2 準(zhǔn)備出票,還剩余票: 17 張
窗口2 賣出1張車票,還剩: 16 張
----------------------------------
窗口3 準(zhǔn)備出票,還剩余票: 16 張
窗口3 賣出1張車票,還剩: 15 張
----------------------------------
窗口1 準(zhǔn)備出票,還剩余票: 15 張
窗口1 賣出1張車票,還剩: 14 張
----------------------------------
窗口3 準(zhǔn)備出票,還剩余票: 14 張
窗口3 賣出1張車票,還剩: 13 張
----------------------------------
窗口1 準(zhǔn)備出票,還剩余票: 13 張
窗口1 賣出1張車票,還剩: 12 張
----------------------------------
窗口2 準(zhǔn)備出票,還剩余票: 12 張
窗口2 賣出1張車票,還剩: 11 張
----------------------------------
窗口1 準(zhǔn)備出票,還剩余票: 11 張
窗口1 賣出1張車票,還剩: 10 張
----------------------------------
窗口3 準(zhǔn)備出票,還剩余票: 10 張
窗口3 賣出1張車票,還剩: 9 張
----------------------------------
窗口2 準(zhǔn)備出票,還剩余票: 9 張
窗口2 賣出1張車票,還剩: 8 張
----------------------------------
窗口1 準(zhǔn)備出票,還剩余票: 8 張
窗口1 賣出1張車票,還剩: 7 張
----------------------------------
窗口3 準(zhǔn)備出票,還剩余票: 7 張
窗口3 賣出1張車票,還剩: 6 張
----------------------------------
窗口2 準(zhǔn)備出票,還剩余票: 6 張
窗口2 賣出1張車票,還剩: 5 張
----------------------------------
窗口1 準(zhǔn)備出票,還剩余票: 5 張
窗口1 賣出1張車票,還剩: 4 張
----------------------------------
窗口2 準(zhǔn)備出票,還剩余票: 4 張
窗口2 賣出1張車票,還剩: 3 張
----------------------------------
窗口3 準(zhǔn)備出票,還剩余票: 3 張
窗口3 賣出1張車票,還剩: 2 張
----------------------------------
窗口1 準(zhǔn)備出票,還剩余票: 2 張
窗口1 賣出1張車票,還剩: 1 張
----------------------------------
窗口3 準(zhǔn)備出票,還剩余票: 1 張
窗口3 賣出1張車票,還剩: 0 張
----------------------------------

車票售空!

退出主線程

注意:使用 synchronized 修飾run()方法是無效的!這會導(dǎo)致自始至終只有一個窗口進行賣票操作!

總結(jié)

以上所述是小編給大家介紹的Python利用多線程同步鎖實現(xiàn)多窗口訂票系統(tǒng),希望對大家有所幫助!

相關(guān)文章

  • python實現(xiàn)大文件分割與合并

    python實現(xiàn)大文件分割與合并

    這篇文章主要為大家詳細介紹了python實現(xiàn)大文件分割與合并,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Numpy中np.vstack()?和?np.hstack()?的實現(xiàn)

    Numpy中np.vstack()?和?np.hstack()?的實現(xiàn)

    本文主要介紹了Numpy中np.vstack()和np.hstack()的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • python使用Celery構(gòu)建異步任務(wù)隊列提高服務(wù)器吞吐量及響應(yīng)速度

    python使用Celery構(gòu)建異步任務(wù)隊列提高服務(wù)器吞吐量及響應(yīng)速度

    這篇文章主要介紹了python使用Celery構(gòu)建異步任務(wù)隊列提高服務(wù)器吞吐量及響應(yīng)速度實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Python中類型檢查的詳細介紹

    Python中類型檢查的詳細介紹

    Python是一種非常動態(tài)的語言,函數(shù)定義中完全沒有類型約束。下面這篇文章主要給大家詳細介紹了Python中類型檢查的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Python控制鍵盤鼠標(biāo)pynput的詳細用法

    Python控制鍵盤鼠標(biāo)pynput的詳細用法

    這篇文章主要介紹了Python控制鍵盤鼠標(biāo)pynput的詳細用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 基于python爬取梨視頻實現(xiàn)過程解析

    基于python爬取梨視頻實現(xiàn)過程解析

    這篇文章主要介紹了基于python爬取梨視頻實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 一文了解Python中NotImplementedError的作用

    一文了解Python中NotImplementedError的作用

    NotImplementedError是一個內(nèi)置異常類,本文主要介紹了一文了解Python中NotImplementedError的作用,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • python 腳本生成隨機 字母 + 數(shù)字密碼功能

    python 腳本生成隨機 字母 + 數(shù)字密碼功能

    本文通過一小段簡單的代碼給大家分享基于python 腳本生成隨機 字母 + 數(shù)字密碼功能,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • python3?MKL庫?安裝使用教程

    python3?MKL庫?安裝使用教程

    這篇文章主要介紹了python3?MKL庫?安裝使用教程的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Python基于locals返回作用域字典

    Python基于locals返回作用域字典

    這篇文章主要介紹了Python基于locals返回作用域字典,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10

最新評論