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

python多線程同步售票系統(tǒng)

 更新時(shí)間:2022年05月07日 14:45:54   作者:Python集中營(yíng)  
這篇文章主要介紹了python多線程同步售票系統(tǒng),文章基于python的相關(guān)資料展開詳細(xì)的多線程同步售票系統(tǒng)介紹,感興趣的小伙伴可以參考一下

解決問題場(chǎng)景:假如剩余1000張電影票需要售賣,同時(shí)有10家電影App來(lái)售賣這1000張電影票。主要的邏輯實(shí)現(xiàn)過程是什么,要求使用python技術(shù)棧進(jìn)行解題?

1、分析過程

分析:主要信息點(diǎn)是10家App平臺(tái)同時(shí)售賣1000張電影票。此時(shí),可以使用10個(gè)python線程來(lái)作為10家App平臺(tái),同時(shí)售賣必須保證電影票數(shù)量的同步,比如A平臺(tái)賣出了一張票那總共剩余的票數(shù)是999,B平臺(tái)若要再賣出一張票則應(yīng)該是999-1=998張票。

技術(shù)棧分析:python多線程提供了threading模塊,并且threading模塊提供了同步鎖Lock來(lái)控制使得票數(shù)達(dá)到統(tǒng)一的效果。

2、準(zhǔn)備過程

將相關(guān)的標(biāo)準(zhǔn)庫(kù)導(dǎo)入到代碼塊中,不用額外安裝其他的非標(biāo)準(zhǔn)庫(kù)。

import threading  # 多線程相關(guān)的操作
import os  # 應(yīng)用退出操作
import time  # 線程中時(shí)間阻塞的控制

初始化一些全局參數(shù),供后面調(diào)用過程中使用。

tickets = 1000  # 初始化電影票的總數(shù)為1000張
lock_ = threading.Lock()  # 獲取一個(gè)同步鎖對(duì)象,用于在多線程邏輯中實(shí)現(xiàn)鎖的控制

3、實(shí)現(xiàn)過程

編寫一個(gè)函數(shù)sell_tickets作為售票的函數(shù)實(shí)現(xiàn)過程。

def sell_tickets(app_name='承擔(dān)電影票售票任務(wù)App平臺(tái)'):
    global tickets  # 將這些電影票作為全局變量
    global lock_  # 將獲取到的鎖對(duì)象作為全局變量
    # 使用一個(gè)死循環(huán)來(lái)模擬當(dāng)前的售票平臺(tái)一直在售票
    while True:
        lock_.acquire()  # 每個(gè)售票平臺(tái)進(jìn)入售票后先加鎖處理
        if tickets > 0:  # 開始售票之前先判斷電影票的數(shù)量是否已經(jīng)售完
            tickets = tickets - 1
            print('當(dāng)前售票平臺(tái):{},賣出一張電影票,剩余電影票:{}張!'.format(app_name, tickets))
            time.sleep(0.1)
        else:
            print('電影票已經(jīng)全部賣完了!')
            os._exit(0)
        lock_.release()  # 處理完成售票業(yè)務(wù)后將鎖釋放
        time.sleep(0.2)

至此,電影票售票的業(yè)務(wù)邏輯就寫完了。下面再通過多線程實(shí)現(xiàn)多個(gè)電影票出售平臺(tái)同時(shí)售票就OK了。

app_thread_1 = threading.Thread(target=sell_tickets, args=('售票App平臺(tái)01',))
app_thread_1.start()
app_thread_2 = threading.Thread(target=sell_tickets, args=('售票App平臺(tái)02',))
app_thread_2.start()
app_thread_3 = threading.Thread(target=sell_tickets, args=('售票App平臺(tái)03',))
app_thread_3.start()
app_thread_4 = threading.Thread(target=sell_tickets, args=('售票App平臺(tái)04',))
app_thread_4.start()
app_thread_5 = threading.Thread(target=sell_tickets, args=('售票App平臺(tái)05',))
app_thread_5.start()
app_thread_6 = threading.Thread(target=sell_tickets, args=('售票App平臺(tái)06',))
app_thread_6.start()
app_thread_7 = threading.Thread(target=sell_tickets, args=('售票App平臺(tái)07',))
app_thread_7.start()
app_thread_8 = threading.Thread(target=sell_tickets, args=('售票App平臺(tái)08',))
app_thread_8.start()
app_thread_9 = threading.Thread(target=sell_tickets, args=('售票App平臺(tái)09',))
app_thread_9.start()
app_thread_10 = threading.Thread(target=sell_tickets, args=('售票App平臺(tái)10',))
app_thread_10.start()

到此這篇關(guān)于python多線程同步售票系統(tǒng)的文章就介紹到這了,更多相關(guān)python售票系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python數(shù)據(jù)結(jié)構(gòu)與算法之字典樹實(shí)現(xiàn)方法示例

    Python數(shù)據(jù)結(jié)構(gòu)與算法之字典樹實(shí)現(xiàn)方法示例

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之字典樹實(shí)現(xiàn)方法,可實(shí)現(xiàn)針對(duì)單詞出現(xiàn)次數(shù)的統(tǒng)計(jì)功能,涉及Python樹結(jié)構(gòu)的定義、遍歷及統(tǒng)計(jì)等相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • python運(yùn)行shell命令subprocess的實(shí)現(xiàn)

    python運(yùn)行shell命令subprocess的實(shí)現(xiàn)

    本文主要介紹了python運(yùn)行shell命令subprocess的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python多線程編程(四):使用Lock互斥鎖

    Python多線程編程(四):使用Lock互斥鎖

    這篇文章主要介紹了Python多線程編程(四):使用Lock互斥鎖,本文講解了互斥鎖概念、同步阻塞、代碼示例等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • 詳解tensorflow訓(xùn)練自己的數(shù)據(jù)集實(shí)現(xiàn)CNN圖像分類

    詳解tensorflow訓(xùn)練自己的數(shù)據(jù)集實(shí)現(xiàn)CNN圖像分類

    本篇文章了tensorflow訓(xùn)練自己的數(shù)據(jù)集實(shí)現(xiàn)CNN圖像分類,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-02-02
  • Win7與Win10下的Tensorboard可視化問題

    Win7與Win10下的Tensorboard可視化問題

    這篇文章主要介紹了Win7與Win10下的Tensorboard可視化問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 使用Python創(chuàng)建一個(gè)隨機(jī)密碼生成器

    使用Python創(chuàng)建一個(gè)隨機(jī)密碼生成器

    密碼安全是當(dāng)前數(shù)字時(shí)代的一個(gè)重要議題,在保護(hù)個(gè)人信息和賬戶安全方面,安全且可靠的密碼是至關(guān)重要的,本文將帶您逐步了解如何使用Python創(chuàng)建一個(gè)隨機(jī)密碼生成器,以生成高強(qiáng)度、難以猜測(cè)的密碼,需要的朋友可以參考下
    2024-01-01
  • python實(shí)現(xiàn)MD5進(jìn)行文件去重的示例代碼

    python實(shí)現(xiàn)MD5進(jìn)行文件去重的示例代碼

    工作中偶爾會(huì)收到一大堆文件,名稱各不相同,分析文件的時(shí)候發(fā)現(xiàn)有不少重復(fù)的文件,導(dǎo)致工作效率低下,那么,這里就寫了一個(gè)python腳本實(shí)現(xiàn)文件去重功能,感興趣的就一起來(lái)了解一下
    2021-07-07
  • python對(duì)象銷毀實(shí)例(垃圾回收)

    python對(duì)象銷毀實(shí)例(垃圾回收)

    今天小編就為大家分享一篇python對(duì)象銷毀實(shí)例(垃圾回收),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-01-01
  • 基于Python的OCR實(shí)現(xiàn)示例

    基于Python的OCR實(shí)現(xiàn)示例

    這篇文章主要介紹了基于Python的OCR實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python3.5實(shí)現(xiàn)socket通訊示例(TCP)

    python3.5實(shí)現(xiàn)socket通訊示例(TCP)

    本篇文章主要介紹了python3.5實(shí)現(xiàn)socket通訊示例(TCP),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-02-02

最新評(píng)論