最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

利用Python實(shí)現(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)致自始至終只有一個窗口進(jìn)行賣票操作!

總結(jié)

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

相關(guān)文章

  • Python+騰訊云服務(wù)器實(shí)現(xiàn)每日自動健康打卡

    Python+騰訊云服務(wù)器實(shí)現(xiàn)每日自動健康打卡

    本文主要介紹了通過Python+騰訊云服務(wù)器實(shí)現(xiàn)每日自動健康打卡,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • python中plt.imshow與cv2.imshow顯示顏色問題

    python中plt.imshow與cv2.imshow顯示顏色問題

    這篇文章主要介紹了plt.imshow與cv2.imshow顯示顏色問題,本文給大家介紹的非常詳細(xì),同時(shí)給大家提到了cv2.imshow()和plt.imshow()的區(qū)別講解,需要的朋友可以參考下
    2020-07-07
  • Python熱重載調(diào)試新利器問題解決

    Python熱重載調(diào)試新利器問題解決

    Reloading是一個Python工具庫,它讓我們可以在每次迭代之前從源代碼中重新加載(或函數(shù))而不丟失任何當(dāng)前已執(zhí)行過程,這篇文章主要介紹了Python熱重載調(diào)試新利器,需要的朋友可以參考下
    2024-06-06
  • Python K-means實(shí)現(xiàn)簡單圖像聚類的示例代碼

    Python K-means實(shí)現(xiàn)簡單圖像聚類的示例代碼

    本文主要介紹了Python K-means實(shí)現(xiàn)簡單圖像聚類的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 用map函數(shù)來完成Python并行任務(wù)的簡單示例

    用map函數(shù)來完成Python并行任務(wù)的簡單示例

    這篇文章主要介紹了用map函數(shù)來完成Python并行任務(wù)的簡單示例,多線程和多進(jìn)程編程的問題一直都是Python中的熱點(diǎn)和難點(diǎn),需要的朋友可以參考下
    2015-04-04
  • python實(shí)現(xiàn)倒計(jì)時(shí)小工具

    python實(shí)現(xiàn)倒計(jì)時(shí)小工具

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)倒計(jì)時(shí)小工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python實(shí)現(xiàn)跨平臺表格數(shù)據(jù)分頁打印預(yù)覽處理詳解

    Python實(shí)現(xiàn)跨平臺表格數(shù)據(jù)分頁打印預(yù)覽處理詳解

    這篇文章主要為大家詳細(xì)介紹了如何使用PySide6/PyQt6實(shí)現(xiàn)Python跨平臺表格數(shù)據(jù)分頁打印預(yù)覽處理,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • python多進(jìn)程使用函數(shù)封裝實(shí)例

    python多進(jìn)程使用函數(shù)封裝實(shí)例

    這篇文章主要介紹了python多進(jìn)程使用函數(shù)封裝實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python將天數(shù)轉(zhuǎn)換為日期字符串的方法實(shí)例

    python將天數(shù)轉(zhuǎn)換為日期字符串的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于python將天數(shù)轉(zhuǎn)換為日期字符串的相關(guān)資料,以及將將字符串的時(shí)間轉(zhuǎn)換為時(shí)間戳的實(shí)例代碼,需要的朋友可以參考下
    2022-01-01
  • python?pandas數(shù)據(jù)處理之刪除特定行與列

    python?pandas數(shù)據(jù)處理之刪除特定行與列

    Pandas是數(shù)據(jù)科學(xué)中的利器,你可能想到的數(shù)據(jù)處理騷操作,貌似用Pandas都能夠?qū)崿F(xiàn),下面這篇文章主要給大家介紹了關(guān)于python?pandas數(shù)據(jù)處理之刪除特定行與列的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08

最新評論

甘南县| 泾阳县| 酒泉市| 金堂县| 淮南市| 锦屏县| 诸城市| 曲周县| 会同县| 绥棱县| 衡南县| 大城县| 开平市| 于都县| 临安市| 沂源县| 巴青县| 长治县| 翁牛特旗| 石渠县| 兰西县| 丰县| 土默特右旗| 婺源县| 济宁市| 太仆寺旗| 乐安县| 嘉祥县| 方山县| 晋中市| 和硕县| 南乐县| 阜城县| 许昌县| 清远市| 枞阳县| 吉首市| 庆城县| 南和县| 墨脱县| 穆棱市|