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

溫馨提示×

溫馨提示×

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

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

怎么用Python多線程實現模擬火車站售票

發布時間:2021-08-31 23:05:45 來源:億速云 閱讀:161 作者:chen 欄目:開發技術

這篇文章主要介紹“怎么用Python多線程實現模擬火車站售票”,在日常操作中,相信很多人在怎么用Python多線程實現模擬火車站售票問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用Python多線程實現模擬火車站售票”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

本文實例為大家分享了Python多線程模擬火車站售票的具體代碼,供大家參考,具體內容如下

Python的標準庫提供了兩個模塊:thread和threading,thread是低級模塊,threading是高級模塊,對thread進行了封裝。

我們使用threading這個高級模塊, 模擬火車站賣票,如果不加鎖,賣出同一張票:

import threading 
from time import sleep, ctime
 
 
N = 100  # 100張票
 
def Sell(name):
     global N
 
     while True:
         if N>0:
            sleep(0.1)  #加入此句,可以讓線程賣出第0張票或同一張票
            print("{}賣出第{}張票!\n".format(name,N))
            N=N-1
 
def main():
 
    threads = {}
 
    for i in ( "A" ,"B"  ):
        # 實例化每個 Thread 對象,把函數和參數傳遞進去,返回 Thread 實例
        t = threading.Thread(target=Sell, args=( i  ,))
        threads[i]=t     # 分配線程
 
    for i in  ("A" ,"B"):
        threads[i].start()    # 開始執行多線程
 
    for i in  ("A" ,"B"):
        threads[i].join()     # 等待線程結束或超時,然后再往下執行
 
    print("程序結束!")
 
 
if __name__ == '__main__':
    main()

運行效果:

怎么用Python多線程實現模擬火車站售票

我們使用鎖來避免賣出同一張票,當多個線程同時執行lock.acquire()時,只有一個線程能成功地獲取鎖,然后繼續執行代碼,其他線程就等待直到獲得鎖為止。用try...finally來確保鎖一定會被釋放。

import threading
from time import sleep, ctime
 
N = 100  # 100張票
 
lock = threading.Lock()
 
def Sell(name):
 
     global N
 
     while True:
 
         lock.acquire()
         try:
            if N>0:
             sleep(0.1)  #加入此句,可以讓線程賣出第0張票或同一張票
             print("{}賣出第{}張票!\n".format(name,N))
             N=N-1
         finally:
             # 改完了一定要釋放鎖:
             lock.release()
 
def main():
 
    threads = {}
 
    for i in ( "A" ,"B"  ):
        # 實例化每個 Thread 對象,把函數和參數傳遞進去,返回 Thread 實例
        t = threading.Thread(target=Sell, args=( i  ,))
        threads[i]=t     # 分配線程
 
    for i in  ("A" ,"B"):
        threads[i].start()    # 開始執行多線程
 
    for i in  ("A" ,"B"):
        threads[i].join()     # 等待線程結束或超時,然后再往下執行
 
    print("程序結束!")
 
 
if __name__ == '__main__':
    main()

運行效果:

怎么用Python多線程實現模擬火車站售票

到此,關于“怎么用Python多線程實現模擬火車站售票”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

大同县| 岳普湖县| 松潘县| 大名县| 福海县| 上思县| 建始县| 高阳县| 毕节市| 如皋市| 日喀则市| 婺源县| 贡山| 杨浦区| 济南市| 贵阳市| 如皋市| 沭阳县| 平远县| 赫章县| 米脂县| 彰化县| 察雅县| 洛隆县| 武定县| 蓬安县| 岳阳市| 永定县| 陈巴尔虎旗| 景宁| 宝鸡市| 柳州市| 望都县| 蒙山县| 瑞金市| 鄯善县| 衡山县| 会宁县| 鸡西市| 宜章县| 筠连县|