日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 多线程同步_Python利用多线程同步锁实现多窗口订票系统(推荐)

發布時間:2025/3/15 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 多线程同步_Python利用多线程同步锁实现多窗口订票系统(推荐) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

利用Python實現多窗口訂票系統,利用

threading.Lock()

避免出現一票多賣,無票也賣的情況,并規范化輸出情況。

代碼:

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()方法是無效的!這會導致自始至終只有一個窗口進行賣票操作!

總結

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

總結

以上是生活随笔為你收集整理的python 多线程同步_Python利用多线程同步锁实现多窗口订票系统(推荐)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。