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

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, "準備出票,還剩余票:", 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 準備出票,還剩余票: 20 張
窗口1 賣出1張車票,還剩: 19 張
----------------------------------
窗口2 準備出票,還剩余票: 19 張
窗口2 賣出1張車票,還剩: 18 張
----------------------------------
窗口3 準備出票,還剩余票: 18 張
窗口3 賣出1張車票,還剩: 17 張
----------------------------------
窗口2 準備出票,還剩余票: 17 張
窗口2 賣出1張車票,還剩: 16 張
----------------------------------
窗口3 準備出票,還剩余票: 16 張
窗口3 賣出1張車票,還剩: 15 張
----------------------------------
窗口1 準備出票,還剩余票: 15 張
窗口1 賣出1張車票,還剩: 14 張
----------------------------------
窗口3 準備出票,還剩余票: 14 張
窗口3 賣出1張車票,還剩: 13 張
----------------------------------
窗口1 準備出票,還剩余票: 13 張
窗口1 賣出1張車票,還剩: 12 張
----------------------------------
窗口2 準備出票,還剩余票: 12 張
窗口2 賣出1張車票,還剩: 11 張
----------------------------------
窗口1 準備出票,還剩余票: 11 張
窗口1 賣出1張車票,還剩: 10 張
----------------------------------
窗口3 準備出票,還剩余票: 10 張
窗口3 賣出1張車票,還剩: 9 張
----------------------------------
窗口2 準備出票,還剩余票: 9 張
窗口2 賣出1張車票,還剩: 8 張
----------------------------------
窗口1 準備出票,還剩余票: 8 張
窗口1 賣出1張車票,還剩: 7 張
----------------------------------
窗口3 準備出票,還剩余票: 7 張
窗口3 賣出1張車票,還剩: 6 張
----------------------------------
窗口2 準備出票,還剩余票: 6 張
窗口2 賣出1張車票,還剩: 5 張
----------------------------------
窗口1 準備出票,還剩余票: 5 張
窗口1 賣出1張車票,還剩: 4 張
----------------------------------
窗口2 準備出票,還剩余票: 4 張
窗口2 賣出1張車票,還剩: 3 張
----------------------------------
窗口3 準備出票,還剩余票: 3 張
窗口3 賣出1張車票,還剩: 2 張
----------------------------------
窗口1 準備出票,還剩余票: 2 張
窗口1 賣出1張車票,還剩: 1 張
----------------------------------
窗口3 準備出票,還剩余票: 1 張
窗口3 賣出1張車票,還剩: 0 張
----------------------------------

車票售空!

退出主線程

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

總結(jié)

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

相關(guān)文章

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

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

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

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

    這篇文章主要介紹了plt.imshow與cv2.imshow顯示顏色問題,本文給大家介紹的非常詳細,同時給大家提到了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實現(xiàn)簡單圖像聚類的示例代碼

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

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

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

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

    python實現(xiàn)倒計時小工具

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

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

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

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

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

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

    這篇文章主要給大家介紹了關(guān)于python將天數(shù)轉(zhuǎn)換為日期字符串的相關(guān)資料,以及將將字符串的時間轉(zhuǎn)換為時間戳的實例代碼,需要的朋友可以參考下
    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)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08

最新評論

南乐县| 峡江县| 甘洛县| 来安县| 伊吾县| 古丈县| 呼伦贝尔市| 河北区| 伊吾县| 叶城县| 温州市| 高陵县| 东宁县| 西丰县| 衡南县| 贵定县| 丹寨县| 新晃| 绥棱县| 开平市| 靖远县| 藁城市| 毕节市| 拉孜县| 邯郸市| 安龙县| 隆回县| 耒阳市| 青龙| 朝阳区| 汉寿县| 松江区| 南岸区| 盖州市| 乌拉特后旗| 那坡县| 唐山市| 阿鲁科尔沁旗| 蒲城县| 阿克陶县| 娄烦县|